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

2021-03-03 21:51:49 字數 1782 閱讀 4889

1樓:可愛的小傻瓜

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

你可以這樣:

srand(1);

magic1=rand()%10+1;

srand(200);

magic2=rnd()%10+1;

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

2樓:匿名使用者

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

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

如果在預編譯時宣告

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

3樓:匿名使用者

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

4樓:匿名使用者

rand((unsigned)time(null))

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

5樓:手機使用者

少寫了 srand((unsigned)time(null))

6樓:匿名使用者

還有乙個初始公函式沒用

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函式產生100以內的隨機數,然後用氣泡排序法對這數進行降序排

1 輸入 2 排序抄 3 輸出。參考 如下 include int main for i 0 i 10 i 輸出 利用隨機函式產生10個100以內的整數,並從小到大的順序排序並輸出。include using namespace std int a 10 測試陣列 duvoid print 輸出陣列...

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

如果需要在數值a b之間隨即產生乙個數,如下操作 單元格中輸入函式 round rand c a 3 函式解釋 在a b區間範圍內隨即產生乙個數,小數點後保留3位!其中的 rand c a 函式解釋 以a為起點,步長為c 在a b中隨即產生乙個數。備註 c 為步長,也就是所取點的範圍長度。在這裡應該...

rand函式生成的不是真正的隨機數嗎

這麼跟你說吧 rand函式生成的隨機數是根據乙個叫做 隨機種子 的東西生成的 當隨內機種子沒有變化時,容rand出來的數是不變的隨機種子他有乙個預設值 為了實現真正隨機我們就要改變它改變隨機種子的函式為 srand 括號裡面帶乙個整數然後真正意義的隨機就要 srand time 0 time這個函式...