隨機種子C語言
1. c語言怎麼讓每次運行使用的隨機數種子都不一樣
指定seed為當前系統流逝了的時間(單位為秒):time_t time(0):
#include <ctime>
//…
srand((unsigned)time(0));
for(int i=0;i<10;i++){
ran_num=rand() % 6;
cout<<ran_num<<" ";
}
第一次運行時輸出:0 1 5 4 5 0 2 3 4 2
第二次:3 2 3 0 3 5 5 2 2 3
總之,每次運行結果將不一樣,因為每次啟動程序的時刻都不同
2. C語言問題,怎樣利用系統時間作為隨機數的種子
C語言中,設置隨機數種子需要包含頭文件stdlib.h,利用系統時間需要包含頭文件time.h。
設置隨機數種子的函數原型為:voidsrand(unsigned int seed);
利用系統時間作為隨機數的種子代碼如下:
#include<stdlib.h>
#include<time.h>
intmain(){
srand((unsigned)time(NULL));//利用系統時間作為隨機數的種子
return0;
}
3. 關於c語言隨機數種子的
最前面加 #include"time.h"
//srand(time(a[i])); 前面斜杠去掉
不行再說
4. c語言怎麼產生隨機數(不用時間種子)
隨意移動移動滑鼠,然後獲取游標的位置,肯定是一個隨機數。用函數:BOOL GetCursorPos(LPPOINT lpPoint);可以獲取游標的當前位置,如:
#include<stdio.h>
#include<windows.h>
int main()
{
POINT p;
while(1)
{
GetCursorPos(&p);
printf("%ld%ld\n",p.x,p.y);
Sleep(1000);
}
return0;
}
用話筒隨便哼幾句,然後保存為聲音文件,其中的錄音數據肯定也是隨機數。所以說,要想獲得真正的隨機數,辦法還是很多的。
5. C語言中產生隨機數利用到時間種子,什麼原理謝謝啦。
在C語言中取隨機數所需要的函數是:
int rand(void);
void srand (unsigned int n);
rand()函數和srand()函數被聲明在頭文件stdlib.h中,所以要使用這兩個函數必須包含該頭文件:
#include <stdlib.h>
rand()函數返回0到RAND_MAX之間的偽隨機數(pseudorandom)。RAND_MAX常量被定義在stdlib.h頭文件中。其值等於32767,或者更大。
srand()函數使用自變數n作為種子,用來初始化隨機數產生器。只要把相同的種子傳入srand(),然後調用rand()時,就會產生相同的隨機數序列。因此,我們可以把時間作為srand()函數的種子,就可以避免重復的發生。如果,調用rand()之前沒有先調用srand(),就和事先調用srand(1)所產生的結果一樣。
6. C語言中的隨機數種子幹嘛用的
防止每次隨機的數與之前的相同。
7. 【C語言】隨機數種子的設置
我以前學過一點這方面的知識,不知道能不能幫到你。
我記得srand這個函數是用來產生一個范圍的,他應該是從一個標准時間開始到現在時間所持續的秒數的這么一個范圍。
然後rand函數是從這個范圍中進行隨機取值。他的返回值是0至RAND_MAX之間的隨機數值,RAND_MAX定義在stdlib.h中。具體多少不記得了。。
8. c語言rand()函數隨機化種子
放在哪裡都不會錯,但放在while循環里通常達不到目的。因為循環執行很快,每次都寫種子會由於系統時鍾還未更新(系統時鍾的更新周期相對較長)而寫入的是同一個種子,這就會使產生的偽隨機序列成為一樣的結構,達不到以假亂真的效果了……所以一般在需要產生偽隨機序列的代碼中在合適的地方用一次種子設置就可以了!
9. C語言產生隨機數中,如果種子不變,一直運行rand函數,真的會時無限不循環嗎
並不是,如果種子不變,一直算下去,會出現循環現象,只是多少數後才循環與演算法相關, 一般演算法每次運算都是拿上次生成的數據當成種子, 這樣算下去比如說幾萬個數後會出現與前邊重復的結果的
如果每次設置的種子都相同,那麼生成的偽隨機數列是相同的
可以網路一下偽隨機數計算公式,從公式就可以看出不會有無限不循環的情況,這也就是為什麼叫"偽隨機"的原因
10. c語言中的隨機數種子
首先告訴你隨機數種子是什麼東東.
電腦不是人,不能隨便就憑空想像一個數字出來。所謂的隨機數,不過是通過一個函數經過計算出來的數字而已。 因此,隨機數不過是函數計算出來的值,而一個函數要得到這個值Y,肯定需要一個輸入X,所以X就是那個種子。
簡單點說 Y = function(x);
隨機數=Y,隨機數種子=X。
第二,rand()%Y+1是什麼意思。 首先你要弄懂%是什麼意思,是取余運算。
舉個例子 10 % 3 = 1 10 % 5 = 0;就是得到余數。
余數的范圍永遠是從 0到被除數-1 不可能等於被除數。
所以rand()%Y的意思就是 得到一個隨機數,這個隨機數的范圍是從0到Y-1
再加1當然就是把這個隨機數的范圍確定在0到Y之間了
一般rand()%某數 都是用來指定取某個范圍內的隨機數的
這個for循環不過就是取列印10個0-99之間的隨機數而已..
如果還不明白hi我