改進C 語言中的隨機數產生以實現無偏骰子模擬
產生隨機數在各種應用程式(包括遊戲開發)中至關重要。雖然提供的程式碼產生 1 到 6 之間的隨機數,但它可能會產生偏差的結果,如輸出所觀察到的。
隨機數產生中的偏差
問題出現使用模運算,將整個可能值範圍除以 6 並傳回餘數。這種方法可能會引入偏差,特別是在範圍較小的情況下。
C 11 隨機數增強
為了解決這個問題,C 11 引入了提供更好分佈的新功能以及隨機數產生的無偏性。一個建議的方法是使用以下程式碼:
#include <random> #include <iostream> int main() { std::random_device dev; std::mt19937 rng(dev()); std::uniform_int_distribution<std::mt19937::result_type> dist6(1, 6); // distribution in range [1, 6] std::cout << dist6(rng) << std::endl; }
程式碼說明
此方法利用 C 11 隨機數庫,該庫提供更強大且無偏差的隨機數產生。透過實現此程式碼,您可以確保公平且不可預測的隨機數,從而提高擲骰子模擬的真實感。
以上是C 11 增強功能如何使用隨機數產生改進無偏骰子模擬?的詳細內容。更多資訊請關注PHP中文網其他相關文章!