※ 引述《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)