精華區beta CSSE 關於我們 聯絡資訊
※ 引述《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)