⑴ 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我
⑵ 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
總之,每次運行結果將不一樣,因為每次啟動程序的時刻都不同
⑶ c語言中如何生成1個0到1的隨機數
C語言中生成1個0到1的隨機數可以執行語句:float b=rand()/(RAND_MAX+1.0);
解析:
標准C庫中函數rand()可以生成0~RAND_MAX之間的一個隨機數,其中RAND_MAX 是stdlib.h 中定義的一個整數,它與系統有關。rand()函數沒有輸入參數,直接通過表達式rand()來引用;
用函數rand取得的隨機數除以(RAND_MAX+1.0),即可確保得到的結果在0到1之間。ISO IEC 9899 2011 (C11)標准中未規定 RAND_MAX 的具體數值。但該標准規定了RAND_MAX 的值應至少為32767。編程的時候,不應該對 RAND_MAX 的具體數值做任何假設。
(3)c語言隨機種子擴展閱讀:
相關說明:
1、因為rand()函數是按指定的順序來產生整數,因此每次執行上面的語句都列印相同的兩個值,所以說C語言的隨機並不是真正意義上的隨機。
2、為了使程序在每次執行時都能生成一個新序列的隨機值,我們通常通過為隨機數生成器提供一粒新的隨機種子。函數 srand()(來自stdlib.h)可以為隨機數生成器播散種子。只要種子不同rand()函數就會產生不同的隨機數序列。srand()稱為隨機數生成器的初始化器。
3、隨機種子(Random Seed)是計算機專業術語,一種以隨機數作為對象的以真隨機數(種子)為初始條件的隨機數。一般計算機的隨機數都是偽隨機數,以一個真隨機數(種子)作為初始條件,然後用一定的演算法不停迭代產生隨機數。
⑷ C語言怎樣設rand()的隨機數種子啊
請使用C庫函數srand()來設定隨機數種子,其原型為:
void srand(
unsigned int seed
);
其中seed就是設定的隨機數種子。
⑸ C語言怎樣產生一定范圍的隨機數
在C語言中,rand()函數可以用來產生隨機數,但是這不是真真意義上的隨機數,是一個偽隨機數,是根據一個數,可以稱它為種子。
為基準以某個遞推公式推算出來的一系數,當這系列數很大的時候,就符合正態公布,從而相當於產生了隨機數。
C語言產生一定范圍的隨機數的源代碼如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i;
for(i=0; i<10; i++) //隨機產生10個數。
{
printf("%d ", rand());
}
return 0;
}
(5)c語言隨機種子擴展閱讀
1、如果要隨機生成一個在一定范圍的數,你可以在宏定義中定義一個random(int number)函數,然後在main()裡面直接調用random()函數。
2、在對rand()的前三次調用中,並且此後得到的返回值仍然是在對rand()的第一批調用中所得到的其餘的返回值。因此,只有再次給srand()提供一個隨機的「種子」值,才能再次得到一個隨機數。
⑹ c語言rand()函數隨機化種子
放在哪裡都不會錯,但放在while循環里通常達不到目的。因為循環執行很快,每次都寫種子會由於系統時鍾還未更新(系統時鍾的更新周期相對較長)而寫入的是同一個種子,這就會使產生的偽隨機序列成為一樣的結構,達不到以假亂真的效果了……所以一般在需要產生偽隨機序列的代碼中在合適的地方用一次種子設置就可以了!
⑺ c語言!!!隨機數種子
原型:void srand(unsigned int seed)。種子是無符號整型。
使用(unsigned)time(NULL)作為種子可以使每次運行的種子都不同,產生的隨機序列也不同。自己指定一個數作為種子,除非通過某種方法使每次程序運行時該數的值都不同,否則將始終產生相同的隨機序列。
⑻ 【C語言】隨機數種子的設置
我以前學過一點這方面的知識,不知道能不能幫到你。
我記得srand這個函數是用來產生一個范圍的,他應該是從一個標准時間開始到現在時間所持續的秒數的這么一個范圍。
然後rand函數是從這個范圍中進行隨機取值。他的返回值是0至RAND_MAX之間的隨機數值,RAND_MAX定義在stdlib.h中。具體多少不記得了。。
⑼ C語言問題,怎樣利用系統時間作為隨機數的種子
C語言中,設置隨機數種子需要包含頭文件stdlib.h,利用系統時間需要包含頭文件time.h。
設置隨機數種子的函數原型為:voidsrand(unsigned int seed);
利用系統時間作為隨機數的種子代碼如下:
#include<stdlib.h>
#include<time.h>
intmain(){
srand((unsigned)time(NULL));//利用系統時間作為隨機數的種子
return0;
}
⑽ c語言中語句srand(time(NULL))什麼意思
「srand(time(NULL));」這條指令的意思是利用系統時間來初始化系統隨機數的種子值,使得每次運行由於時間不同產生而產生不同的隨機數序列。
srand函數是隨機數發生器的初始化函數。它的原型是「void srand(unsigned int seed);」srand和rand()配合使用產生偽隨機數序列。
rand函數在產生隨機數前,需要系統提供的生成偽隨機數序列的種子,rand根據這個種子的值產生一系列隨機數。如果系統提供的種子沒有變化,每次調用rand函數生成的偽隨機數序列都是一樣的。
srand(unsigned seed)函數通過參數seed來改變系統提供的種子值,從而可以使得每次調用rand函數生成的偽隨機數序列不同,從而實現真正意義上的「隨機」。
通常可以利用系統時間來改變系統的種子值,即srand(time(NULL)),可以為rand函數提供不同的種子值,進而產生不同的隨機數序列。
(10)c語言隨機種子擴展閱讀:
rand()函數的使用注意事項:
1、使用該函數首先應在開頭包含頭文件stdlib.h。
2、在標準的C庫中函數rand()可以生成0~RAND_MAX之間的一個隨機數,其中RAND_MAX 是stdlib.h 中定義的一個整數,它與系統有關。
3、rand()函數沒有輸入參數,直接通過表達式rand()來引用。
4、因為rand()函數是按指定的順序來產生整數,因此每次執行上面的語句都列印相同的兩個值,所以C語言的隨機並不是真正意義上的隨機,有時候也叫偽隨機數。
5、為了使程序在每次執行時都能生成一個新序列的隨機值,我們通常通過偽隨機數生成器提供一粒新的隨機種子。函數 srand()(來自stdlib.h)可以為隨機數生成器播散種子。只要種子不同,rand()函數就會產生不同的隨機數序列。srand()稱為隨機數生成器的初始化器。