当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。