在著名的演講「rand() 被認為是有害的」中,使用引擎分佈提倡隨機數產生範例,而不是經典的 std::rand() 加模簡化。
為了測試所提出的主張,進行了一個實驗,將std::rand() 與std::mt19937 加std:: 進行比較進行了uniform_int_distribution:
令人驚訝的是,兩種方法的總滾動分佈相同,這表明 std::mt19937 加上 std::uniform_int_distribution 沒有提供任何額外的均勻性。然而,新方法大約慢了 4 倍。
雖然這個實驗似乎表明std::rand() 不一定較差,但重要的是要考慮std::rand() 的固有局限性:
相較之下,新的
在性能方面,建議std::minstd_rand 可能是std 的合適替代品::mt19937 當LCG 質量足夠時,可能會提供更好的速度(特別是在避免使用uniform_int_distribution進行分佈調整時)。
最終,隨機數產生器的選擇取決於應用程式的特定要求,但新的與傳統的std::rand() 實作相比,該庫提供了多個優勢,特別是對於需要高品質隨機數的應用程式。
以上是新的隨機庫真的比「std::rand()」好嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!