私はある種の確率のためのアルゴリズムを必要としています(Javaでは、理論はかなり一般的なはずです).... 私はそれを何と呼ぶべきかさえ知りません。
もう少し詳しく説明すると、関数が呼び出されたときに X 回実行する必要があるタスクがあります。時々、それが起こる可能性は 10 分の 1 しかありません。つまり、(およそ) その関数が呼び出される 10 回に 1 回、そのタスクが実際に実行されます。10 分の 2 になることもあれば、10 分の 1 になることもあります。常に「10 分の 1」とは限らない場合でも、十分に簡単で単純な条件付きです。
問題は、1 対 1 の確率を超える可能性があることです。それは 10 分の 15 かもしれません - 半分の時間は 1 回実行され、残りは2 回実行されます。または、呼び出されるたびに 2 回 (ほぼ) 実行される 5 分の 10 です。ご覧のとおり、これは単純な不等式テストから抜け出しました。
したがって、私が探しているのは、乱数に基づいて、何かが発生する頻度 (10 分の 1、200%、0.75、どのような形式でも) に基づいて実行カウントを返すアルゴリズムです。誰かがこれについて手がかりを提供できる場合-おそらく実際に検索する用語のように-それは大歓迎です!
編集: 多くの結果が見つからないのも不思議ではありません。誰もが私と同じように混乱しています!
何よりもまず、実際の「最大」値はありません。正式には定義されていません。アルゴリズムが受け取った確率値からそれを抽出できれば、それはすばらしいことです。
また、間違いなくランダムである必要があるため、本質的に不完全になります。コインを 10 回投げると、理論的には完全に互角であるはずなのに、表が 8 回出る可能性があります。そして、それは大丈夫です。実際、それがポイントです。
なぜそれが必要なのかを説明することはできます...しかし、それは適切なオブジェクト指向のモジュール化の実践に違反することになります:) 外部関係者はインターフェースを知っているだけで済みます。値を受け入れ(おそらく浮動小数点数、「0.75」が最適に機能するようです)、intを返します。5 回に 1 回の確率で 100 回呼び出すと、返される値の合計は平均して 20 になります。