C語言中,主函式中呼叫隨機數函式,保證每次產生的隨機數不重複,該如何弄呢

2021-04-21 22:06:01 字數 2165 閱讀 8099

1樓:匿名使用者

其實只要做一次種,然後再呼叫rand()就能產生不同的結果了,不用每次呼叫專rand()之前都用srand()做種的也就屬是說你那個程式可以改為

srand(time(0));

for(a=0; a<200; a++)

2樓:匿名使用者

如果你利用 srand(time(null)) 產生種子的話 可以這麼做

#include

#include

#include

int main()

return 0;

} 其實你只要對每版次的種子處理一下使權之差別大一點就不會有重複了!

c語言如何用rand函式產生4個不重複的隨機數啊?

3樓:匿名使用者

可以將生成的隨機數放入陣列中,每次遍歷陣列,有相同的重新生成隨機數。知道生成4個即退出迴圈。

#include

#include

#include

int main()

for (int i = 0; i < cnt; i++) // 列印隨機數陣列

printf("%d ", num[i]);

return 0;}

4樓:匿名使用者

加個判斷就行了,儲存下前面的數,後面的隨機數和前面的所有數比較,不一樣就取,一樣就繼續取餘。再者,取餘的數應該大一些的話,遇到重複的概率就要小很多。如a=rand()%10000;

5樓:匿名使用者

比如可以利用增量不為0的辦法:#include#include

#includeint main()

return 0;}

6樓:匿名使用者

#include //標準工具庫,要用到其中的rand()#include

#include

#include //時間庫,要用到裡面的時間來做隨機數的種子 int main(void)

;srand(time(null));

for(i=0; i<4; i++)

printf("\n");

return 0;}

c語言中的rand()函式,說是產生隨機數的函式,可是為什麼我在使用時產生的隨機數就沒變過呢?

7樓:

rand() 使用的隨機數產生機制,稱為偽隨機數;

所以rand()也叫偽隨機數發生器。

必須初始化乙個真正的隨機一點的資料,得到的才像乙個真正的隨機數。

所以使用它之前,要呼叫srand 函式初始化一下。

一般大家都喜歡用,系統當前時間來初始化它

#include

srand(time(null));/*或者

.....

a[i]=rand() / rand_max * n;

/* 或者 a[i]=(double)rand() /( rand_max +1)* n; */

....

8樓:匿名使用者

隨機數函式是不真正的隨機數,所以每次執行會有相同的結果,這個現象要用srand函式來解決,用srand函式初始化隨機數生成器,可以避免生成相同的隨機數

一般用電腦的時間來進行初始化

srand((unsigned) time(null));

9樓:龍__鳳

在程式前面加上srand(time(null));,保證隨機種子在每次執行程式時都不一樣,rand()得到的數就不一樣了

10樓:何處可人生

你需要加乙個種子,就是在用rand()之前加上srand(time(null))就好了;這樣要用到頭檔案time.h;根據執行的系統時間不同了計算隨機數,但其實這個函式並不是真隨機,是偽隨機,

11樓:旋風男孩兒

這是因為在使用rand()隨機函式時之前要獲取隨機種子srand((unsigned)time(null));

12樓:匿名使用者

我記得rand()是需要引數的,不同引數導致不同的序列,比如用當前時間作為引數就是乙個不錯的選擇。

隨機數函式如何使用,用rand隨機函式怎麼求指定範圍的隨機數

srand函式是隨機數發生器的初始化函式,原型 void srand unsigned seed 它需要提供乙個種子,如 srand 1 直接使用1來初始化種子。不過常常使用系統時間來初始化,即使用 time函式來獲得系統時間,它的返回值為從 00 00 00 gmt,january 1,1970 ...

c語言程式設計函式呼叫問題,C語言程式設計函式呼叫問題

char in if in yi 錯了。char in 只能容納 1 個 ascii 符號。改 char in 4 printf 解方程應用 n n您要解的方程是?n printf 一元二次方程 yi n printf 二元一次方程 er n scanf s in 0 if strcmp in,yi...

rand隨機數函式用法,如何用rand函式產生乙個隨機數?

rand 函式的返回值就是求取隨機的值,所以如果沒有對資料有要求,直接這樣寫 printf d rand 輸出乙個隨機數.但如果對數有要求,如小數或在一定值以內 小數 rand 100.0 100.0後面的.0必須寫,得到乙個小數點後有兩位小數的小數。一定範圍內的數 rand m n m是資料區間差...