高效產生均勻分佈的隨機整數
在程式設計領域,產生隨機數在各種應用中起著至關重要的作用。在這些任務中,創建均勻分佈的隨機整數是一個常見的要求。讓我們探索現有方法的局限性,並提出一個最佳化的解決方案,以滿足速度、均勻性、可變範圍和可播種性的特定要求。
樸素方法的局限性
使用 rand() 函數的簡單方法由於排除了最大邊界值而無法提供真正的均勻性。為了解決這個問題,提出了第二個公式,但實驗顯示分佈不均勻。
最佳解決方案:利用C 標準庫
幸運的是,C 標準庫提供了產生無偏隨機數的綜合解:
以下C 程式碼片段示範了實作:
#include <random> std::random_device rd; // Random device for seed initialization std::mt19937 rng(rd()); // Random-number engine using Mersenne-Twister std::uniform_int_distribution<int> uni(min,max); // Distribution class for uniform integers auto random_integer = uni(rng);
此方法有顯著的優點:
透過利用 C 標準函式庫,您可以毫不費力地高效可靠地產生均勻分佈的隨機整數,無需複雜的公式或重新發明輪子。
以上是如何在 C 中有效產生均勻分佈的隨機整數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!