在关于网络游戏的辩论中,一个用户建议对Client和Server对象使用相同的随机种子,这样即使敌人在服务器上随机移动,客户端也会以相同的方式移动.
起初我想争辩说同一种子并不能保证每个平台上的随机结果一致; 这种网络方法非常幼稚.但对种子知之甚少,我无法确定.
为了论证,我们假设我们用C++编写代码并使用标准的rand()和srand()函数.
因为rand没有这样的保证.
<random>然而,对于标题,情况则有所不同.
在cppreference它说
所有引擎都可以专门播种,序列化和反序列化,以便与可重复的模拟器一起使用.
您可以使用和序列化和反序列化引擎的状态,operator>>并 operator<<通过网络发送此状态,并保证在不同平台上的可重现性.这是标准规定的.
std::default_random_engine 可以使用引擎盖下的任何引擎,因此没有这样的保证.
分发是实现定义的,您需要定义自己的分布以保证可重复性.
奖金视频链接有关的很多详细信息<random>标题.