我有奇怪的行为,我试图生成随机数 他们有时完全相同, 或者如果他们同时创建有问题? 使用VC 2012
for (int i = array_size; i < (array_size); i++)
{
srand((unsigned int)time(NULL));
int rw = rand() % 960 + (20); //returns a pseudo-random integer between x resolution size 0 -> width
int rh = rand() % 640 + (20); //returns a pseudo-random integer between x resolution size 0 -> height
lwsl_notice("c:%d width %d height %d\n",c, rw, rh);
c++;
}
输出结果为:
[2016/06/30 09:39:09:7274] NOTICE: c:0 width 606 height 567
[2016/06/30 09:39:09:7274] NOTICE: c:1 width 606 height 567
[2016/06/30 09:39:09:7274] NOTICE: c:2 width 606 height 567
[2016/06/30 09:39:09:7274] NOTICE: c:3 width 606 height 567
答案 0 :(得分:5)
将srand((unsigned int)time(NULL));
移出for
循环。
答案 1 :(得分:3)
您的循环非常快,time(NULL)
始终具有相同的值。这意味着您的生成器始终从相同的种子开始,因此它将始终生成完全相同的值。
srand
应该只在程序中调用一次(在for
循环之外)。通常,人们从main
函数调用一次。
答案 2 :(得分:1)
在for循环中,您将 i 初始化为array_size
,然后将其循环到i<array_size
并增加 i 。那是什么?请发布更多代码。