我有一個撲克和二十一點遊戲,它將一張基卡卡片存儲在一個MySQL數據庫中。爲了洗牌,我使用ORDER BY RAND()隨機地訂購表格,並按照該順序將卡片插入到不同的表格中。使用RAND()會導致逼真的賠率,這種賠率會被真實的牌和物理洗牌玩弄,或者這個功能不夠隨機?MySQL的RAND()足夠用於紙牌遊戲的「洗牌」牌套牌嗎?
2
A
回答
5
與真正的卡片混洗並不是真的都是隨機的,除非你練習很多。不正確地洗牌很容易,因此包裝的頂部或底部不能很好地洗好。
使用ORDER BY RAND()洗牌是一種合理的做法,但也有一些事情需要注意的:
- 如果由RAND產生了兩個完全相等的隨機數引入略有偏差()作爲它不會將這兩張卡相互正確地洗牌。
- RAND()不是密碼安全的。通過觀察甲板上的一些第一張牌,熟練的攻擊者可以推斷用於洗牌的PRNG的內部狀態,並因此預測剩餘的牌。
- ORDER BY RAND()需要O(n log(n))操作。例如,它很可能具有可接受的性能來混洗52行,但它可能不是您想要用於洗牌數百萬行的東西。
爲了娛樂目的,你的方法應該沒問題。如果這是嚴重的錢,你可能想使用更好的洗牌算法,如Fisher Yates shuffle和密碼安全的隨機數發生器。
0
供您使用:可能。
從遊戲行業來看:
號內華達州博彩委員會監督的可能性,並在這裏批准了遊戲的隨機性。爲了達到這個目的,消除隨機發生器RE的可能性是符合房屋利益的,所以真正的遊戲軟件使用必須通過認證方法(通常使用一些自然混沌輸入)獲得的到期「真隨機」種子。銀行通常會使用類似的工具。
如要進一步瞭解,請參閱LavaRand
相關問題
- 1. HTML5紙牌遊戲
- 2. 如何填充,洗牌,處理紙牌遊戲
- 3. 用python實現紙牌遊戲套牌的最佳方式
- 4. Prolog卡牌遊戲:有效套牌
- 5. 紙牌遊戲設計
- 6. c#,代表,紙牌遊戲
- 7. C,紙牌遊戲WAR
- 8. 洗牌一套
- 9. 更新紙牌遊戲的分數
- 10. Java中的紙牌遊戲問題
- 11. 開發Android的在線紙牌遊戲
- 12. 簡單的python紙牌遊戲
- 13. Java多人紙牌遊戲AI集成
- 14. 紙牌遊戲計劃:設計
- 15. 創建標準紙牌遊戲(iPhone SDK)
- 16. 哪個環境適合紙牌遊戲?
- 17. 紙牌遊戲玩家類OOP設計
- 18. Django戰略紙牌遊戲結構
- 19. Java程序 - 紙牌遊戲戰爭
- 20. Rails兩名玩家紙牌遊戲
- 21. 在線紙牌遊戲+與PHP聊天
- 22. Python卡牌遊戲
- 23. 創造可贏得的「隨機」單人紙牌洗牌
- 24. Uno牌抽牌遊戲不能將牌打印到面板上
- 25. 在Java中洗牌一套
- 26. 用於紙牌遊戲的c#picturebox繼承
- 27. 用於模擬紙牌遊戲的現成Javascript庫?
- 28. SwiftyJSON洗牌
- 29. java:卡洗牌,
- 30. 火花洗牌