随机数的产生


本文内容来源于网络。



首先介绍一下要用到的头文件 : (.h结尾为C头文件,无后缀为C++头文件)

stdlib.h / cstdlib : 包含随机数种子设置,随机数发生器.

 time.h / ctime : 包含时间函数

首先介绍函数:

   void srand(unsigned seed); 设置随机数种子为参数中的seed.

   int rand(); 返回一个随机数,在同一个随机序列下依次返回序列中的每一个数.

   time_t time(time_t *);  返回从197011000秒到现在的秒数.

    为了保证随机性,我们一般以time函数的返回值作为随机数种子,这样可以保证每次出现的随机序列是不同的.所以通常用

          srand( (unsigned) time(NULL) );

来设置随机数种子.但是time函数是以秒为单位的,所以在一秒的时间内如果两次调用srand会使随机数序列相同,导致输出相同.所以建议把srand放在所有操作之前,绝对不要放在循环中,否则以计算机的速度会在很短的时间内调用到多次srand,导致重复序列一直出现.

    在设置完随机数种子之后就可以在程序中调用rand()来生成随机数了.如果要生成[a,b]之间的随机数就用rand() % (b - a + 1) + a来生成.

//随机数生成示例程序

#include <iostream>

#include <cstdlib>

#include <ctime>

using namespace std;

int main()

{

    srand( (unsigned) time(NULL) ); //设置随机数种子为当前时间

    for(int i = 1; i <= 20; i++)

        cout << rand() % 100 + 1 << endl; //生成201-100间的随机数

    return 0;

}

你可能感兴趣的:(随机数的产生)