隨機生成 s,e 之間的m個整數

2021-09-06 08:44:56 字數 703 閱讀 4524

隨機生成[s,e]之間互不相同的m個整數

這樣考慮:從n(e-s+1)個整數取m個數,那麼每個數取到的概率是m/n。

怎麼應用這一點呢?

可以這樣:隨機生成[1,n]之間的乙個整數,如果這個數小於等於m就表示滿足了m/n的概率,即概率m/n的事件發生了。

數學上的證明大概是很繁瑣吧,不懂~~~

**實現如下:

//

隨機生成[s, e]之間的m個互不相同的數,並放存入p中

void getrandomnum(int *p, int s, int e, int

m) }

}

另外乙個問題:隨機生成和為s的n個整數解決這個問題有多種方法,其中投影法要用到上面的演算法

假設要生成和為15的6個數,利用getrandomnum得到5個數1, 3, 6, 8, 14,如下圖,我們在數軸上標識這六個數

可知,oa+ab+bc+cd+de+ef必然等於15。它們的長度之和分別為

1, 2, 3, 2, 6, 1

這就找到了乙個組合:1+2+3+2+6+1 = 15

總結:1 隨機生成[1, s)之間的n-1個整數,然後加上s構成n個整數。2 按順求出它們之間的差。

隨機生成零到n之間的m個數

隨機生成0到n之間的m個數 如何用隨機數生成0到n之間的m個不重複的數 1 最直接的方法就是先隨機生成乙個0到n之間的數,判斷這個數是否已被選上,如果以前沒選過,則選上,如果以前已選,則丟棄 void common int n,int m int randnum int malloc n sizeo...

隨機生成十個整數

dim a 1 to 10 as integer private sub command1 click form load end sub private sub form load dimp as string p用來顯示隨機生成的10個數 randomize p fori 1 to 10 生成1...

生成給定範圍的n隨機整數

python 1 import random23 defrandommore min,max,n 4 res 5while len res n 6 num random.randrange min,max 7if num not inres 89 print res view code j a 1 ...