gpt4 book ai didi

C++ 需要一种很好的技术来播种不使用 time() 的 rand()

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:23:16 25 4
gpt4 key购买 nike

我有一个启动许多客户端进程的 bash 脚本。这些是我用来测试多人游戏的 AI 游戏玩家,大约有 400 个连接。

我遇到的问题是 AI 播放器使用

srand( time(nullptr) );

但是如果所有玩家都大约在同一时间开始,他们将经常收到相同的 time() 值,这意味着他们都在同一个 rand() 序列上。

部分测试过程是为了确保如果大量客户端几乎同时尝试连接,服务器可以处理。

我考虑过使用类似的东西

srand( (int) this );

或类似的,基于每个实例都有唯一内存地址的想法。

还有其他更好的方法吗?

最佳答案

将随机种子用于伪随机生成器。

std::random_device 是昂贵的随机数据。 (贵如慢)你用它来播种 prng 算法。 mt19937 是您需要的最后一个 prng 算法。

如果您的需要,您可以选择通过分发提供它来跟进它。即,如果您需要某个范围内的值而不是生成器提供的值。

std::random_device rd;
std::mt19937 generator(rd());

关于C++ 需要一种很好的技术来播种不使用 time() 的 rand(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50662280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com