1樓:匿名使用者
其實不用vba也能實現。步驟如下:
在a列[a1:a100]的單元格內順序輸入1-100,然後在b列對應單元格內輸入=rand(),生成100個隨機數;
對b列進行排序,升序降序都行(注意:要選擴充套件選定區域,執行排序)。
執行完排序後,100個數字就被隨機打亂了
第1-50行可以分為1組(其中前70%,也即前35個編號可以分配**方案a,其餘15個編號是方案b);
第51-100行可以分為2組(其中前40%,也即前20個編號可以分配**方案a,其餘30個編號是方案b)
2樓:落葉l無情
你可以隨機抽取50*70%=35個人分配a方案,剩下的b方案
另一組同理抽取50*40%=20個人分配a方案,剩下的b方案
3樓:果豪郭軒秀
因為你分成了2組,一組從1-50裡面抽取,二組從51-100裡面抽取,抽取原理是一樣的,為了不用寫重複的**,寫了一個自定義的函式。
35=50*70%,20=50*40%,按你的比例算出來的
4樓:
假設a比例60%,b比例40%
=if(rand()<=0.6,"a","b")
excel vba 如何隨機一定範圍的隨機數
5樓:詩玉蘭雲裳
不同段的成績分別用迴圈來產生。90以上用int(rnd()*10)+90,60~90用int(rnd()*30)+60,不及格用int(rnd()*60)。注意,這樣分數全是整數哈。
excel vba 如何隨機生成數字 50
6樓:糊塗的貝克街
vba生成隨機數的函式是rnd,生成的是0到1之間的隨機數。
sub button1_click()
dim a
a = int(rnd * 10)
end sub
7樓:怎樣會是怎樣
i= rnd
rnd 是 0 到 1之間的數
你想隨機 0 到 10 的數 就rnd* 10 配合round或者int函式得要你想要的隨機範圍
幫忙用excel vba產生一組正態分佈的隨機數
8樓:匿名使用者
現在的版bai本不用vba就可以直接在duexcel中直接產生資料。
方法zhi一:直接用公式
dao =norminv(rand(), 0.2, 0.5);拖動公式獲得100個資料專。
若非要屬用vba做的話參照上面公式,挑選100個範圍為-1.5-1.5資料輸出即可。
方法二:在資料面板中進入「資料分析」——「隨機數發生器」,「分佈」選項選擇「正態」即可。若選單面板中無「資料分析」選項,可先點選office圖示進入「選項」——「載入項」——選擇「分析工具庫」——在「管理」處點「轉到」,載入分析器。
excel 用vba根據概率生成隨機數 10
9樓:
這個需要用vba麼?excel函式就搞定了。
當然錄製一個巨集也沒問題。
準備好資料,點選資料分析按鈕,如圖操作。
我這準備的資料是5個,總概率是1(0.1,0.15,0.2,0.25,0.3),分別對應值(1,2,3,4,5)
數值與概率輸入區域必須是兩列,左邊為值,右邊為概率。
結果你就選個起始單元格輸出吧。
下面是巨集指令碼
7, , activesheet.range("$a$1:$b$5")
10樓:匿名使用者
只需把=int(rand()*+8)複製到單元格即可, =rand()表示0到1之間的隨機數 =rand()*-100則是-100到0之間的隨機數, =rand()*-100+50則是-50到50之間的隨機數 取整數為 =int(rand()*-100+50) 注意:int函式為取整,表示小於該數的最小整數 如int(8.13)=8而int-8.
13)=-9 不過這個不會影響你去隨機數
11樓:明佳妙明
請問10天數按上面10%,10%,15%,15%,15%,15%,15%,10%,10%生成嗎,如果按上面生成,15%生成1.5個不是整數不好處理,會有2個或1個出現了。
12樓:匿名使用者
其實這個程式不難做,關鍵是計算的演算法還是要和你**後才能定。或者,你可以將演算法規定好
13樓:張聰聰
簡單的隨機生成不用用到vba,直接用函式就可以了,vba是好用,但是能用簡單的辦法沒必要搞得那麼複雜。
14樓:匿名使用者
可以用rand()和randbetween()兩個函式,前者是0到1,後者是任意兩函式之間,如下是兩種a1列第1~50行隨機示例:
sub method01()
dim i as integer
for i = 1 to 50
cells(i, 1) = "=rand()" '取0至1之間的隨機數
next i
end sub
sub method02()
dim i as integer
for i = 1 to 50
cells(i, 1) = "=randbetween(50,80)" '取50至80之間的隨機整數
next i
end sub
excel如何將一個數字分成多個隨機數字?隨機數字之和等於總數?
15樓:小文
隨機數字之和等於總數:你可以在另一單元格輸入=sum(b1:b25)做檢驗
excel中大量的公式函式可以應用選擇,使用microsoft excel可以執行計算,分析資訊並管理電子**或網頁中的資料資訊列表與資料資料圖表製作,可以實現許多方便的功能,帶給使用者方便。
16樓:匿名使用者
第一步:a1輸入100
第二步:b1至b25 分別輸入rand()函式,得出25個隨機數第三步:b26=sum(b1:b25)
第四步:c1輸入b1/b26 得出b1佔b26的比率,依次往下填充至c25,分別得出b列佔b26的比率
第五步:在d列 用a1分別乘以c列的相應比率即可得出。
17樓:匿名使用者
1.先在a1和a2放入調整係數0.5和1
2.在c1放入要拆的數字100
3.在d1放入拆分的個數25
接下來的操作和上一步的個數有關,這裡以25為例說明
4.在b2到b26放入1到25作為序號
5.在c2填入 =c1-randbetween(1,(c1-$d$1+b2)*$a$2/power($d$1+1-b2,$a$1))
並向下拉到c25,在c26填入0
這一步的基本想法是先生成一個隨機數,讓100減去他後剩下的數再拆成24個,如此反覆至只剩一個數,所以c26是0,而不是繼續拆
這裡認為每個隨機數都是正整數,如果可以取0,就把公式中的下限1改成0
如果可以不是整數,就把函式改成
=c1-rand()*(c1-$d$1+b2)*$a$2/power($d$1+1-b1,$a$1)
6.在d2填入 =c1-c2
並向下拉到d26
7.到這裡就完成了,雙擊某單元格然後回車可以更新得數
8.如果對結果不滿意可以調整係數
a1的可調整範圍是0到1,a2的範圍與a1有關,a2取值在(a1+0.5)附近比較好,可以自己試
18樓:
比如要求生成60-100的6個隨機數,總和為450第一行不要填寫任何數字
a2=randbetween(max(60,450-sum(a1:a$1)-100*(6-row(a1))),min(100,450-sum(a1:a$1)-60*(6-row(a1))))
下拉至a7
19樓:匿名使用者
咦!怎麼沒有看到有這提問的?
之前剛剛回答過類似問題:
修改一下,還行。
假設,「一個數字」在a1。「分成25個隨機數字」(就設定為整數吧):
b1輸入
=round(rand()*(a$1-25)+1,0)回車;
b2輸入
=round(rand()*(a$1-sum(b$1:b1)+row(a1)-25)+1,0)
回車並向下填充至b24;
b25輸入
=a1-sum(b1:b24)回車。
公式採用隨機函式,可按f2+enter更新運算結果!
(隨機數字之和等於總數:你可以在另一單元格輸入=sum(b1:b25)做檢驗)
20樓:匿名使用者
這題有點難度,給你個思路,
使用rnd()函式,每次迴圈rnd()會產生一個0~1之間的隨機數,本例中:25個數可以相同,如果想不通,在加一個迴圈判斷;另外本例中25個數可以有0。如果不想可以再加判斷。
希望能幫到你。
如果不用vba,excel函式為:rand()**如下:
private sub commandbutton1_click()dim n as integer
dim total as integer
dim m as integer
for n = 1 to 25
m = 100 * rnd()
if m < 1 then
m = 1
else
m = cint(m)
end if
if total + m > 100 thenm = 0
end if
cells(1, n) = m
if n = 25 then
cells(1, n) = 100 - totalend if
total = total + m
next n
end sub
excel 怎麼用vba 隨機輸出數字?
21樓:匿名使用者
vba生成隨機數的函式是rnd,生成的是0到1之間的隨機數。如果想生成50到100之間的隨機數,可以用以下公式:
sub button1_click()
dim a
a = int(rnd * 50) + 50end sub
註解:rnd*50可生成0到50之間的隨機數,用int取整數(根據題主的表述,我認為你是只需要整數的),然後再加上50,就是50到100之間的隨機整數了。
excel vba 數字隨機分組的問題
22樓:匿名使用者
問題這麼又變了
你前面說的100個取90個
總共有17310309456440種組合
**中的t是excel進行1000³次計算的時間(在記憶體),18.78秒
按我的電腦執行的話,得
17310309456440 * 90 ÷1000³ * 18.78÷3600個小時
也就是8127.19個小時
要差不多一年
如果僅僅是上面的陣列隨機打亂次序的話
用下面的**
sub fdsa()
dim arr(1 to 10, 1 to 10)dim i as byte
dim j as byte
for j = 0 to 9
for i = 0 to 9
arr(i + 1, j + 1) = j + i * 10next
next
for i = 1 to 10
for j = 1 to 10
ii = int(rnd * 10 + 1)jj = int(rnd * 10 + 1)temp = arr(ii, jj)
arr(ii, jj) = arr(i, j)arr(i, j) = temp
next
next
[a1].resize(10, 10) = arrend sub
如何用c 產生隨機數,如何用C 產生隨機數?
在煙幹辰 rand 這個函式就是產生隨機數的,想要一個範圍的隨機數,可以用取餘數的方式 如取0 99之間的數,可以rand 100 需要使用rand 和srand 函式 rand 為隨機數函式,產生 0,int型最大值 之間的整數數 srand seed 為初始化隨機數種子函式 具體例子如下 inc...
怎樣用c 編寫隨機數,如何用C 產生隨機數?
c 中生成指定範圍內的隨機數過程為 設定隨機種子srand 生成隨機數rand n 1,生成1 n之間的隨機數 include include rand srand include void main include include using namespace std int main retu...
C 隨機數問題
string str c 一個很小程式 char strarr 取出由漢字組成的字串和非漢字字串。string englisthstr chinsestr foreach char s in strarr bool isch u4e00 u9fa5 if isch chinsestr elseeng...