C語言用rand函式為什麼每次都是相同的隨機數

2025-07-10 03:25:19 字數 3979 閱讀 1680

1樓:網友

是這樣的。

c語言中的隨機數應該是應用的隨機數表。

比如寫乙個程式。

printf("%d",rand()%10);

每次執行結果都是一樣的。

如果想產生每次不同的隨機數,就時間關聯來產生隨機數。

這樣只要每次執行時間不同,隨機數就不同。

2樓:好朋友

把程式發給我 我幫你看看 我

c語言:為什麼每次產生的rand隨機數全都一樣?例如第乙個是9,後面全都是

3樓:龍的傳人之凱聖

看了你的程式,有點錯誤;

srand與rand函式前者必須設定發生隨機數種子,如果沒有則rand函不會根據種子發生隨機數;

而你的srand(unsigned)沒設定可以發生可變的隨機數種子;

如srand(unsigned 1)就是乙個產生可變隨機種子數;

4樓:眾裡尋他

你執行了幾遍? **沒問題,多試幾次 還有問題請 截圖(執行的圖)

5樓:網友

把srand 放到for迴圈的外面。

在c語言裡,為什麼rand()每次生成的數都一樣?

6樓:網友

那是因為rand()生成的是偽隨機數。

需要種子來產生不同的隨機數。

如果在預編譯時宣告。

專#include,則可用生成種子的函屬數 srand((unsigned)time(null)) 因為時間值可以看成是乙個隨機的量(即每一時刻都不同),所以就生成了變化的偽隨機數。

7樓:網友

沒有生成隨機數種子,隨機數發生器其實是有規律的,要產生無規律隨機數需要每次用不同的種子數初始化隨機數發生器。

8樓:網友

rand((unsigned)time(null))

你生成的數字一樣,是因為沒有根據它的時間來變化,上面的**就可以了。

9樓:網友

還有乙個初始公函式沒用。

c語言生成隨機數的函式,為什麼迴圈後隨機數都一樣?

10樓:網友

如果srand放在迴圈裡面,開來始迴圈,讀到。

自rand的時候,srand才會被呼叫,但是srand裡面time的時間精度太低,for已經迴圈完了,才播種了一次;如果放在外面,進入主函式的時候,就會開始播種,產生不同的種子,這樣才能迴圈出不同的隨機數。不知道這樣理解對不對?

11樓:給哥爆個

隨機數函式每次都要初始化。

12樓:網友

srand((unsigned)time(0));

只需一次,放在最前面即可。

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

13樓:

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

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

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

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

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

#include

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

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

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

14樓:網友

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

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

srand((unsigned) time(null));

15樓:龍__鳳

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

16樓:何處可人生

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

17樓:旋風男孩兒

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

18樓:網友

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

為什麼用rand()產生的隨機數每次都相同

19樓:可愛的小傻瓜

你設定的當前時間為隨機數種子,但是兩條**之間相差時間非常短,內所以種子是一樣的,隨容機數也就一樣。

你可以這樣:

srand(1);

magic1=rand()%10+1;

srand(200);

magic2=rnd()%10+1;

怎樣解決rand()函式每次產生隨機數都一樣的問題

20樓:硪丨曖戀

使用rand()函式之前。

可以給隨機數當前時間作為 乙個種子 初始化一下這樣每次生成的就不一樣了。

srand((unsigned(time(null)))

需要標頭檔案 #include

希望對你有幫助~

在c++中用隨機產生數函式rand每次執行程式產生的數都相同,什麼函式可以在每次程式執行時產生不用的數?

21樓:網友

#include

#include

#include //加隨機種子時候一定要加這個標頭檔案using namespace std;

int main()

return 0;}

22樓:網友

設定乙個隨機種子。

srand(unsigned time(null));就可以了。

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

23樓:網友

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

#include

#include

#include

int main()

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

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

return 0;}

24樓:匿名使用者

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

25樓:匿名使用者

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

#includeint main()

return 0;}

26樓:匿名使用者

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

#include

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

srand(time(null));

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

printf("");

return 0;}

c語言中random函式怎麼用

random函式 math.random 可以產生出0 1之間的任意小數,例如0.0105901374530933 或0.872525005541986,有幾個其他的函式可以用來改變產生的數字,從而可以更好的在影片中使用 math.round math.ceil math.floor 這幾個函式都是...

用c語言程式設計編寫函式,用冒泡法對主函式中的陣列進行從小到大的排序

樓上的答案加個 define n 5 void sort int a void main sort a 編寫函式用氣泡排序法對陣列中的n個資料進行從小到大的排序。1 新建一個163.php。2 輸入php網頁的結構 3 宣告php與瀏覽器互動的檔案型別和編碼。4 使用 array 函式定義一個 nu...

c語言這個函式怎麼用switch語句來寫

include int main printf y d y c語言,用switch語句寫個選擇選單,case後面怎麼寫函式呼叫?呼叫下面的程式?學過呼叫函式吧,就是那麼呼叫的,當然也可以自己直接寫。舉個例子吧。資料a b,如果我想操作加減乘除,那麼可以這麼寫 include void jiafa i...