为什么每次运行程序时都得到相同的随机数?

时间:2018-07-17 15:51:17

标签: c++ function random

我试图生成随机数(1到6),但是每次运行程序时,我总是得到相同的两个数。这是代码:

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

// function prototype
int random();

// main function
int main()
{
    int rand1=random();
    int rand2=random();
    cout << rand1 << endl;
    cout << rand2 << endl;

    cin.get();
    return 0;
}

//function definition
int random()
{
    const int MAX_NUMBER = 6;
    const int MIN_NUMBER = 1;
    unsigned seed=time(0);
    srand(seed);

    int randomNumber;
    randomNumber=(rand() % (MAX_NUMBER - MIN_NUMBER + 1)) + MIN_NUMBER;


    return randomNumber;
}

我不确定是什么问题,为什么我总是得到相同的两个随机数。

1 个答案:

答案 0 :(得分:2)

注意:

rand()返回一个随机正整数,范围为032,767。可以将此功能视为使用32,767个面滚动模具。

数字是由数学算法生成的,该数学算法在给定起始数字(称为"seed")时始终会生成相同的数字序列。由于每次种子保持相同时都会生成相同的序列,因此rand()函数会生成伪随机序列。

防止每次生成相同的序列,请使用  srand(x)来更改seed的值。

示例程序:

/*generate 10 random numbers between 1 and 6 inclusive, without repetition of the sequence between program runs*/

#include <iostream.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
     // to prevent sequence repetition between runs     
     srand(time(NULL));  


     for(int i = 1; i <=10; i++)     // looping to print 10 numbers
     {
           cout<< 1 + rand( ) % 6;   // formula for numbers 
     }

     return 0;
}