我编写的程序在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;
}
答案 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
以确保。