各確率区間で結果が得られるように、確率に従ってデータを並べ替えるにはどうすればよいですか?
たとえば、次のようなデータセットがあるとします
リーリー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スケーラビリティ
また、アドバイスをいただければ幸いです、アドバイスをお願いします、みなさん、ありがとうございました!
我觉得这个问题有问题,这样的输入甚至不能保证满足条件的分布是存在的。
以
{a: 60, b: 40}
为例:全排列的空间是{ab, ba}
。那么根据你的定义应该有:跟我写的一个样 = = 我也想知道怎么扩展