當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C/C++ rand() and srand()用法及代碼示例


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++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。