我创建了一个测试应用程序,可以生成0到250 000范围内的10k随机数.然后我计算出MAX和min值,并注意到MAX值总是在32k左右......
你知道如何扩大可能的范围吗?我需要一个MAX值约为250 000的范围!
这是根据rand()的定义,参见:
http://cplusplus.com/reference/clibrary/cstdlib/rand/
http://cplusplus.com/reference/clibrary/cstdlib/RAND_MAX/
如果您需要更大的随机数,您可以使用外部库(例如http://www.boost.org/doc/libs/1_49_0/doc/html/boost_random.html)或从多个小随机数中计算大型随机数数字由你自己.
但要注意你想要的分配.如果只是总结小的随机数,结果将不会平均分配.
如果您只是按常数因子缩放一个小的随机数,则可能的值之间会有间隙.
取随机数的乘积也不起作用.
可能的解决方案如下:
1) Take two random numbers a,b
2) Calculate a*(RAND_MAX+1)+b
Run Code Online (Sandbox Code Playgroud)
因此,您可以获得均匀分布的随机值,最高可达(RAND_MAX + 1)^ 2-1