问题产生
// An highlighted block
mt19937 rng(unsigned(time(0)));
uniform_real_distribution<double> ur_length(info.Min_longitude, info.Max_longitude);
uniform_real_distribution<double> ur_width(info.Min_latitude, info.Max_latitude);
在使用上面的随机函数生成随机数时,我使用其生成100个随机序列,同时在外部调用这个函数10次,这相当于给定10次种子初值time(0),用其生成随机序列。但是我发现我10次生成的随机序列完全一样。
问题原因
由于最开始工程师在debug模式下面写的,后来切换到release模式下,整体运行速度一下子起来了,同时因为这是伪随机数,即根据我给入的种子,生成随机序列,如果我给入的种子一定,那么我生成的随机序列也是相同的。
所以原因很明显了,release模式下,运行速度快,导致种子初值time(0)不变,从而序列值不变。
解决方法
加个小小的延时
备注
想想这个原因我在知乎还当段子看过,没想到自己也踩了。