c 產生隨機數問題

2022-03-28 03:24:01 字數 825 閱讀 4605

對於產生隨機數的種子,一定要放在最外層函式,因為種子必須只有乙個,也就是說如果你要產生n個隨機數,也只需要乙個種子,即srand(time(0));先舉個簡單的例子

#define divisor   100

int mian()

int number[100];

srand(time(0));//一定要放在最外邊,不能放在for迴圈裡面,不然產生的隨機數會重複等問題

for(int i=0;inumber[i]=rand%divisor;//使得產生的數在乙個範圍內,即0-99

return 0;

上面是乙個簡單的例子,可能很多人都知道了,不會犯上面錯誤,但是問題是有些時候需要去層層呼叫各個函式,然後生成各個物件或者什麼的,再初始化隨機隨機數,這就很容易犯這個錯誤了,也是我自己在做畢業設計時犯的錯誤。

開始時我的程式大致是這樣的:

int main()

readinit();

void readinit()

inituers(path1);

inituers(path2);

inituers(path3);

inituers(path4);

inituers(path5);

inituers(path6);

inituers(path7);

void inituers(char *path)

srand(time(0));//應該把這句放在main()函式中的

然後這樣就出現了比較隱蔽的問題了,我隨機數產生多了,當要1000個左右時就會出現重複一樣的資料,一開始我無法檢測到,苦惱了好久,其實這個犯的錯誤就是前面提到的。

c 隨機數產生

我們在做能自動生成試卷的考試系統時,常常需要隨機生成一組不重複的題目,在.net framework中提供了乙個專門用來產生隨機數的類system.random。對於隨機數,大家都知道,計算機不可能產生完全隨機的數字,所謂的隨機數發生器都是通過一定的演算法對事先選定的隨機種子做複雜的運算,用產生的結...

C 隨機數產生

標準庫 被包含於中 提供兩個幫助生成偽隨機數的函式 函式一 int rand void 從srand seed 中指定的seed開始,返回乙個 seed,rand max 0x7fff 間的隨機整數。函式二 void srand unsigned seed 引數seed是rand 的種子,用來初始化...

C 產生隨機數

c 怎樣產生隨機數 這裡要用到的是 rand 函式 srand 函式 c 裡沒有自帶的random int number 函式。1 如果你只要產生隨機數而不需要設定範圍的話,你只要用rand 就可以了 rand 會返回一隨機數值,範圍在0至rand max 間。rand max值至少為32767。例...