【发布时间】:2015-05-20 22:08:16
【问题描述】:
在大学学习第一门编程课程时,我们了解到将时间作为 rand 函数的种子值引入,以便在每次代码运行时给出随机值。如果我可以固定时间并玩一个每次你点击播放时都会给出随机级别的游戏,我会一直得到相同的级别吗?如果是的话,有没有办法做到这一点?
【问题讨论】:
-
不要把时间当作种子。使用特定的种子而不是时间调用
srand()。 -
是的,我问的是在我玩的特定游戏中使用它,我希望始终获得相同的水平,这是否可行?
-
@Barmar - 这可能还不够......您需要将时间设置为播种 PRNG 的确切时间。否则可能会有其他进程导致延迟
-
当然,这只有在软件使用的时钟分辨率在秒范围内时才有效? (相关:stackoverflow.com/q/5574914/2564301,还有几十个类似的问题)比如这个应用的加载时间超过一秒,设置时钟就不行了。
-
大多数游戏都足够智能,可以将“用户输入”添加到游戏开始的时间以及非常精确的播种计时器。这确保了这不能被轻易利用。不要在开始时播种,而是在第一次或第二次用户输入之后。