rand ()
rand()函數在C中使用以生成隨機數。如果我們使用rand()函數生成一個隨機數序列,它將在每次程序運行時一次又一次地創建相同的序列。假設如果在rand()的幫助下在C語言中生成5個隨機數,則每次編譯和運行程序時,輸出都必須是相同的數字序列。
用法:
int rand(void): returns a pseudo-random number in the range of 0 to RAND_MAX. RAND_MAX: is a constant whose default value may vary between implementations but it is granted to be at least 32767.
// C program to generate random numbers
#include <stdio.h>
#include <stdlib.h>
// Driver program
int main(void)
{
// This program will create same sequence of
// random numbers on every program run
for(int i = 0; i<5; i++)
printf(" %d ", rand());
return 0;
}
注意:該程序將在每次運行程序時創建相同的隨機數序列。
輸出1:
453 1276 3425 89
輸出2:
453 1276 3425 89
輸出n:
453 1276 3425 89
srand()
srand()函數設置生成一係列偽隨機整數的起點。如果未調用srand(),則設置rand()種子,就像在程序啟動時調用srand(1)一樣。種子的任何其他值會將生成器設置為不同的起點。
用法:
void srand( unsigned seed ): Seeds the pseudo-random number generator used by rand() with the value seed.
注意:在對rand()進行任何調用之前以及在程序啟動之前,偽隨機數生成器隻能播種一次。每次要生成新一批偽隨機數時,都不應重複播種或重新播種。
標準做法是使用對srand(time(0))的調用結果作為種子。但是,time()返回的time_t值每次都會變化,因此偽隨機數會隨每個程序調用而變化。
// C program to generate random numbers
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
// Driver program
int main(void)
{
// This program will create different sequence of
// random numbers on every program run
// Use current time as seed for random generator
srand(time(0));
for(int i = 0; i<5; i++)
printf(" %d ", rand());
return 0;
}
注意:該程序將在每次運行的程序上創建不同的隨機數序列。
輸出1:
453 1432 325 89
輸出2:
8976 21234 45 8975
輸出n:
563 9873 12321 24132
How srand() and rand() are related to each other?
srand()設置種子,蘭德使用該種子來生成“random”號。如果您在第一次調用rand之前沒有調用srand,就好像您已經調用srand(1)將種子設置為1一樣。
簡而言之,srand() —為rand()函數設置種子。
相關用法
注:本文由純淨天空篩選整理自 rand() and srand() in C/C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。