C++随机函数随机出相同结果序列

C++随机函数随机出相同结果序列

问题产生

// 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)不变,从而序列值不变。

解决方法

加个小小的延时

备注

想想这个原因我在知乎还当段子看过,没想到自己也踩了。

猜你喜欢

转载自blog.csdn.net/m0_37710845/article/details/89001286