1. 程式人生 > >rand與srand:隨機數的生成

rand與srand:隨機數的生成

當應用需求中有隨機要求時,使用rand
應用場景:;洗牌、抽籤、搖號、彩票自動下注。。。

for(int i=0;i<10;i++)
{
    printf("%d\n",rand())
}

rand()函式的缺陷:普通PC產生的是偽隨機數。因為在物理上PC難以製造隨機現象。
每次程式執行時,這個隨機數的序列都是一樣的。
此隨機是指:如果程式持續執行,則每次rand()結果不同。
解決辦法:設定一個種子(seed)
隨機數是根據一定的規則生成的,傳入一個引數,使其產生不同的結果。(如果不呼叫srand,相當於預設的執行了srand(1))
srand(11)和srand(12)之後產生的隨機數序列

srand11);//確保每次程式啟動後,傳入不同的seed
for(int i=0;i<10;i++)
{
    printf("%d\n",rand());
}

每次程式啟動時把當前時間傳給srand

srand(time(NULL));

對rand()結果取模
通常地,要對rand()返回的結果取模,使其坐落在一個區間內
比如:要在100和160之間隨機去一個數
int r=rand()%60+100;
其中,60是區間長度,範圍在100~160