编程文汇

跨平台一致的随机数生成:windows android ios

c++ stdlib的实现再在不同平台上是不同的,所以,各种实现的rand函数也不同,虽然c++详细定义了rand的生成标准,可是定义的还是不够详细。导致在使用同一seed的情况下,各种平台上生成的随机数序列不尽一致。有可能前N个是一致的,到了几百、几千、几万个以后就不一致了。

如果我们的逻辑依赖于随机数的一致性,那这就是个巨大的隐藏极深的bug。

所以,我用了boost c++中的随机数生成库,既然人家号称是跨平台的,所以我也期望它的随机数一致性也是跨平台的。

在现有测试环境下,如果指定一致的随机数生成参数,各种平台上生成的随机数序列是一致的。所以,如果客户端、服务器需要使用同样的随机数序列,只需要使用同一seed即可,可以极大减少网络传输。