我正在为 AI 竞赛做主持人,并且有一个 randomBot 可以选择随机的可能值。
该机器人有 2 个导出函数:Init(_seed) 和 MakeMove()
为了玩完全相同的游戏,主机为每个机器人定义了种子值。并将其传递给 Init 函数。
random bot 的 Init 函数有一个 srand(_seed) 函数调用。random bot 的 MakeMove 函数有一个 rand() 函数调用。
现在的问题是,在加载 2 个机器人后,每个游戏都应该具有相同的种子值,但它们是不同的。
据我所知,srand 应该为每个模块/线程存储它的值,而不是共享它。
我做了一个测试并创建了一个函数 mysrand 和 myrand ,它们不会分别通过调用 srand 和 rand 导出。
我用 mysrand 和 myrand 替换了导出函数中的 srand 和 rand ......它起作用了......
我知道为什么会发生这种情况,但不确定...
那么为什么它会发生以及如何避免它,因为我希望参赛者在导出的函数中使用他们想要的任何函数(不想使用我的代理函数)。
谢谢。
我正在使用 windows,编译器:gcc、visual C++、borland C++ builder