随机数字的数字范围

时间:2015-07-24 19:43:28

标签: c++

我编写的程序在1到1000000的范围内每半秒选择一个随机数,当我运行它时,它会绘制一些最多5位的数字。例如32654等。为什么不选择更高的数字呢?

#include <iostream>
#include <windows.h>
#include <time.h>
#include <cstdlib>

int main(){

    std::cout << "Losowa liczba z przedziału 1...100 \n";
    srand(time(NULL));
    for(int i = 0; i <= 10; i++){
        int liczba = rand()%1000000 + 1;
        std::cout << liczba << std::endl;
        Sleep(200);
        i--;
    }

return 0;
}

2 个答案:

答案 0 :(得分:0)

来自http://www.cplusplus.com/reference/cstdlib/rand/

  

int rand(void);

     

生成随机数

     

返回0到RAND_MAX范围内的伪随机整数。

来自http://www.cplusplus.com/reference/cstdlib/RAND_MAX/

  

RAND_MAX

     

rand返回的最大值

     

此宏扩展为整数常量表达式,其值是rand函数返回的最大值。

     

此值与库有关,但在任何标准库实现上保证至少为32767。

在您的情况下,对于您正在使用的库,似乎RAND_MAX可能定义为32767。因此rand()%1000000 + 1永远不会超过32768

答案 1 :(得分:0)

用于生成“范围为1到1000000”(即rand()%1000000 + 1)的随机数的方法只有在rand()本身能够生成相同的数字时才能正常工作(或范围,更好,更大。

显然,您平台上的rand()不会产生如此大的数字。因此,您的方法不起作用。检查值RAND_MAX以确保。