excel VBA如何控制隨機數字分佈比例

時間 2022-07-28 02:20:08

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...