在c 中用隨機產生數函式rand每次執行程式產生的數都相同

2021-04-21 22:06:01 字數 2119 閱讀 3807

1樓:匿名使用者

#include

#include

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

int main()

return 0;}

2樓:匿名使用者

設定一個隨機種子

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

為什麼c++ rand函式產生的隨機數有相同的規律?

3樓:匿名使用者

rand本質上產生的是偽隨機數,不是真正意義上的隨機數。已知常見的幾種產生偽隨機數的演算法都是通過簡單的迭代遞推而產生,種子是決定性因素,一個相同種子產生的後續每一個偽隨機數是可以一個個推算出來的。這也就是為什麼使用rand函式之前一定要先用srand給一個比較隨機一些的種子先初始化,一般用系統時間,因為程式執行的當前時刻是很難發生撞車的。

而沒有正確的使用srand的程式,或者說每次都使用相同種子rand產生的偽隨機數序列將完全相同。

4樓:匿名使用者

要事先設定一個偽隨機數種子(srand函式),種子相同,產生的隨機數序列就相同,一般以當前時間為隨機數種子,因為時間是一去不復返的,每時每刻時間都在變化,就可以保證每時每刻產生的隨機數序列不同。

5樓:黑暗中的劍

偽隨機數,通過一個演算法獲得

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

6樓:

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

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

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

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

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

#include

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

.....

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

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

....

7樓:匿名使用者

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

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

srand((unsigned) time(null));

8樓:龍__鳳

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

9樓:何處可人生

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

10樓:旋風男孩兒

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

11樓:匿名使用者

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

c++中rand()每次產生的隨機數是不是應該不相同嗎?但是我的怎麼都一樣啊 ???是編譯器改進的原因嗎?

12樓:

#include

main裡面加du上

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

{srand((unsinged)time(null) );

cout<隨機

zhi數dao要種子的,專是偽隨機,並不是真屬是隨機

13樓:匿名使用者

看著是不一樣,不過如果你反覆啟動這個程式呢,就一樣了,加上種子就不一樣了,哦,樓上的型別寫錯了,應該是unsigned

c產生隨機數 不重複,C 產生隨機數 不重複

private const int num 3 數目 private const int maxvalue 5 最大數 private const int minvalue 1 最小數 public int sort int num return num public int getnum int ...

挑戰演算法可以用rand產生隨機數嗎

我看了下網上,是這樣的 rand 隨機產生一個數 0 65535 加上 後,就是對其它數求餘,求餘產生的數取內決於求餘的數。比如,rand 20 意思是利用rand 的返回值 一個0 65535之間的數 對20求餘,求餘的結果就是0 19。也就是0 20 1 之間。如果我們要產生10 20之間的隨容...

c語言使用隨機函式rand編寫猜數字的遊戲

include include include define n 10 main system pause 測試資料 請輸入您猜的那個數 10第1次猜測,很遺憾您猜小了!請輸入您猜的那個數 15第2次猜測,很遺憾您猜大了!請輸入您猜的那個數 12第3次猜測,恭喜您猜對了,電腦隨機數是12!inclu...