隨機生成[s,e]之間互不相同的m個整數
這樣考慮:從n(e-s+1)個整數取m個數,那麼每個數取到的概率是m/n。
怎麼應用這一點呢?
可以這樣:隨機生成[1,n]之間的乙個整數,如果這個數小於等於m就表示滿足了m/n的概率,即概率m/n的事件發生了。
數學上的證明大概是很繁瑣吧,不懂~~~
**實現如下:
//另外乙個問題:隨機生成和為s的n個整數解決這個問題有多種方法,其中投影法要用到上面的演算法隨機生成[s, e]之間的m個互不相同的數,並放存入p中
void getrandomnum(int *p, int s, int e, int
m) }
}
假設要生成和為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 ...