首頁  >  文章  >  後端開發  >  如何產生具有預先定義總和的隨機數並確保等機率分佈?

如何產生具有預先定義總和的隨機數並確保等機率分佈?

Barbara Streisand
Barbara Streisand原創
2024-10-31 16:22:47105瀏覽

How to Generate Random Numbers with a Predefined Sum and Ensure an Equal Probability Distribution?

產生具有預定義總和的隨機數

簡介:等概率分佈

產生隨機數以求和到預定值提出了一個有趣的挑戰在電腦程式設計。雖然簡單的方法似乎足夠了,但它們經常會引入偏差,即某些數字更有可能被選擇。本文深入研究了一種精煉的解決方案,確保所有可能組合的機率分佈相等。

限制和樣本函數

提供的解決方案依賴於 constrained_sum_sample_pos 函數來實現可能結果的均勻分佈。此函數產生一個正整數 (n) 列表,其總和等於目標值(總計)。它的主要特點是每個組合都有相同的機會被選擇。

均勻分佈和定制

函數的優勢在於其數學基礎,它保證所有可能的組合都有相同的可能性。此外,它還可以輕鬆適應其他場景,例如產生 7 個數字,總和為 100 或任何其他所需的總數。

實作

下面提供了該函數的Python 實作:

圖形說明

@FM 的圖形表示提供了對函數工作原理的清晰理解:

結論

這個複雜的解決方案,基於約束和採樣提供了一種穩健且無偏的方法,用於產生總和達到預定義值的隨機數。它確保所有可能結果的機率相等,使其成為各種程式設計場景的可靠工具。

以上是如何產生具有預先定義總和的隨機數並確保等機率分佈?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn