【发布时间】:2011-09-05 21:00:06
【问题描述】:
我正在开发一款纸牌游戏,我需要洗牌算法做得非常好,并且每次游戏运行时都不同,并且没有可预测的纸牌序列。
我正在使用 Mersenne twister 算法,但它仍然需要一个种子,所以说真的,虽然它产生了大量的数字,但现在只有 1000 个可能的游戏序列,因为我使用 time(NULL) 来种子。我应该如何播种?
【问题讨论】:
-
为什么使用 time(NULL) 意味着你只有 1000 种可能性?
-
@SoapBox 如果我一直用 678 做种子,游戏总是完全一样的,time(NULL) 返回一个从 1 到 1000 的值
-
如您所知,
time_t... 的可能值只有 1000 个 ;) -
time(NULL)返回自 1970 年 1 月 1 日 GMT 以来的当前时间(以秒为单位)。time(NULL)的值几十年来一直大于1000,并且每秒增加一次。 ;)
标签: c++ algorithm random playing-cards mersenne-twister