作者semop (semop)
看板CSSE
标题Re: [程式] 乱数的来源 玩家
时间Thu Nov 16 13:24:33 2006
※ 引述《StubbornLin (Victor)》之铭言:
: ※ [本文转录自 GameDesign 看板]
: 作者: StubbornLin (Victor) 看板: GameDesign
: 标题: [程式] 乱数的来源 玩家
: 时间: Thu Nov 16 00:14:26 2006
: 我在修改我们计概无聊的程式作业= =
: 是一个猜数字游戏,虽然简单
: 但是有一个令人头痛的老问题还在
: 那就是乱数,如果srand只用time
若要用 srand, 最好不要只用 time().
一般的建议是使用 getpid() ^ time() ^ clock() ^ (not initialized int)
当然有更精确的时间函数就去用,如 gettimeofday() 之类的。
: 在密集的呼叫之下,产生出来的乱数非常接近
不应多次使用 srand. 结果不会比较好的。
此外,在 FreeBSD 请使用 random() 和 srandomdev(), 在 Windows 下则
改用 rand_s() 即可。
这都可以简单提昇乱数的有效性。
若能连上网路,使用 random.org 的资料是最简便的了。或是预先抓一大把
资料下来存成档案,再和自己的乱数资料结合,只是这都不是很必要。
要是更有学术精神一点,关於乱数产生的演算法和程式码,可参考这里:
http://www.cs.berkeley.edu/~daw/rnd/
: 而如果只呼叫一次的乱数又有周期
: 所以,我想到一个办法
: 就是把玩家的行为也加进来
: 那也许会好一点 例如下注之类的
: 不过还没去试
: 因为这个想法,让我想起以前就有想过的一个问题
: 那就是现上游戏大量乱数的来源
: 我一直在想,玩家本身的行为,就可以说是乱数
: 因为人是一种相当难预测的生物,每个人的背景,每个人所携带的资讯量
: 都相当惊人,所以做出来的反应也都不尽相同
: 走的路线、聊天、座标、动作等等有的没有的
: 当母群体够大时,我想应该可以从玩家本身的行为
: 来产生乱数,这样一个理论我想深入一点可以写一篇论文 XD,虽然我这样想
: 不过通常我想到的东西已经有人想过,甚至拿来应用了
: 所以我想问一下,这样的想法有没有已有人写出些什麽东西来
: 或应用上了?
: 还是说有没有什麽想法也可以讨论看看 XD
如果你想欺负玩家,针对玩家的行为模式是可行的,有许多机器学习方法
可以运用,但这不是乱数。
如果只是想产生公正的乱数,则不需要。
--
※ 编辑: semop 来自: 61.222.173.26 (11/16 13:29)