第一次在Stackoverflow處。我希望有人能夠幫助我搜索算法。在給定範圍內生成N個隨機數,總和達到給定總和
我需要在給定的範圍內生成N個隨機數,總和爲給定的總和!
例如:Generatare 3數字,總計爲11
範圍:
- 價值和3之間。5和3之間和1之間
- 價值8.
- 值7.
此檢查的生成數字可能是:2,5,4。
我已經搜索了很多,並找不到我需要的解決方案。
有可能產生像N這樣的恆定總和模數: generate random numbers of which the sum is constant 但我不能用範圍來完成。
或者通過生成N個隨機值,將它們相加,然後將常數和除以隨機和,然後將每個隨機數乘以該商as proposed here。
主要問題,爲什麼我不能採用這些解決方案是,我的每個隨機值有不同的範圍,我需要的值是與範圍均勻分佈(例如,在min/max沒有頻率發生,如果我切斷小於/大於最小/最大值的值)。
我也想到了一個靈魂,取一個隨機數(在該示例中,值爲1,2或3),生成範圍內的值(在最小值/最大值或最小值和其餘值之間,取決於在哪個更小),減去我給定的數量,並保持這種狀態,直到一切分配。但那將是可怕的無效。我真的可以使用算法的運行時間固定的方式。
我試圖讓它在Java中運行。但是那個信息並不重要,除非有人已經準備好了解決方案。我需要的只是一個算法的描述或想法。
不可能。如果他們符合你的要求,他們並不是真正的隨機。 –
@HotLicks - 我不同意,他們可能是隨機的(拋開我們無法生成隨機數字) - 但是隨機數量的自由度較低。我發現這個說法與「不能在範圍[0,10]中產生一個隨機數 - 因爲限制使得它不可能進行真正的隨機化」。 – amit
@amit - 但是在選擇了前兩個數字後,第三個數字根本就不是隨機的。 –