我需要在指定的区间[max;min]内生成随机数。
此外,随机数应该在区间上均匀分布,而不是聚集在某个特定点。
目前我正在这样生成:
for(int i=0; i<6; i++)
{
DWORD random = rand()%(max-min+1) + min;
}
根据我的测试,随机数只在一个点附近生成。
Example
min = 3604607;
max = 7654607;
生成的随机数:
3631594
3609293
3630000
3628441
3636376
3621404
下面的回答中提到:OK,RAND_MAX是32767。我在C++ Windows平台上。是否有其他方法可以生成具有均匀分布的随机数?
rand()
是均匀的。你使用的是哪个库?cstdlib.h
的rand()
是不均匀的:http://www.cplusplus.com/reference/cstdlib/rand/ - Mike Warren