/*
*產生 0~n-1 範圍內的 m 個隨機整數的有序列表,且不允許重複,m <= n
*注:參考<>一書
*/#include
#include
#include
#include
using namespace std;
//產生較大的隨機數
int bigrand()
//隨機返回m,n之間的整數。
int randint(int m,int n)
///從0 -- n-1中隨機選m個數;
void method1(int n,int m)
}//弄亂這n個數,再取前m個數排序
void method3(int n,int m)
sort(x,x+m);
for(i=0;i}void main()
高效產生m個n範圍內的不重複隨機數(m n
如何產生不重複的隨機數?最容易想到的方法,是逐個產生這些隨機數,每產生乙個,都跟前面的隨機 數比較,如果重複,就重新產生。這是個很笨的方法,且比較次數呈線性增長,越往後次數越多。其實這些 比較是多餘的,完全可以不進行比較,只要反過來,按順序產生這些數,但隨機產生它們的位置。例如下 面產生100個10...
0 n 1個數中隨機選m個數
給定乙個n,乙個m,要求從0.n 1個數中隨機選取m個數。這裡參考 程式設計珠璣 中的乙個方法,既利用概率測試來進行選取。假設我們要從0到100中選取10個數。首先考慮0,我們選取它的概率為10 100 1 10,因此我們可以產生乙個隨機數 應該遠遠大於n 利用該數模100的值是否小於10來模擬選取...
c c vc產生任意範圍內的隨機數
大家都知道c語言中的隨機函式random,可是random函式並不是ansi c標準,所以說,random函式不能在gcc,vc等編譯器下編 譯通過。那麼怎麼實現vc語言中的隨機函式呢?其實,除了random函式,還有乙個rand函式,這個函式也是乙個隨機函式,他可以產生從0到rand max 32...