コイントスを使用して一様乱数 0..n を生成する通常の方法は、明らかな方法で n より大きい最小の 2 のべき乗の rng を構築することです。次に、このアルゴリズムが n-1 より大きい数を生成するたびに、それをスローします。離れて番号を付けて、もう一度やり直してください。
残念ながら、これには無限の最悪のケースのランタイムがあります。
終了を保証しながらこの問題を解決する方法はありますか?
コイントスを使用して一様乱数 0..n を生成する通常の方法は、明らかな方法で n より大きい最小の 2 のべき乗の rng を構築することです。次に、このアルゴリズムが n-1 より大きい数を生成するたびに、それをスローします。離れて番号を付けて、もう一度やり直してください。
残念ながら、これには無限の最悪のケースのランタイムがあります。
終了を保証しながらこの問題を解決する方法はありますか?
この回答からの引用https://stackoverflow.com/a/137809/261217 :
1/7 は基数 5 の無限小数であるため、一定の時間内に実行される (正確に正しい) 解はありません。
アダム・ローゼンフィールドになぜそれが本当なのか聞いてください:)