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這個函式...