各確率区間で結果が得られるように、確率に従ってデータを並べ替えるにはどうすればよいですか?
たとえば、次のようなデータセットがあるとします
リーリーKey は並べ替える値、value は配列内のその位置に各値が出現する確率です。たとえば、配列内の位置 0 に が出現する確率は 40% です。計算された配列、a は 40% です。機会が配列の最初に表示され、残りは確率に従ってアルゴリズムで並べ替えられます。
私の現在の解決策 (Low の方法であり、配列が拡張するにつれてサポートし続けることはできません):
1. a の間隔が 0 ~ 40、b であると仮定して、既存の確率に従って間隔を分割します。は 40 ~ 60、c は 60 ~ 70 などになります。
2.関数を使用して 1 ~ 100 の範囲の乱数を取得し、結果をスローします (つまり、対応する範囲に入れます)。 )
コードは以下の通りです(最適化アイデア募集中)
リーリー 発生した問題: (in_array の判定は、これらの間隔の値が 1 回しか計算できないため)
1. 計算された値が各間隔の値を持つとは限りません
2. コード Noスケーラビリティ
また、アドバイスをいただければ幸いです、アドバイスをお願いします、みなさん、ありがとうございました!
黄舟2017-05-24 11:35:58
この質問には問題があると思います。そのような入力は、条件を満たす分布が存在することさえ保証しません。
{a: 60, b: 40}
为例:全排列的空间是{ab, ba}
と一緒に。次に、あなたの定義によれば、それは次のようになります: