完全な質問は次のとおりです。
サイズの配列からm個の整数のセットをランダムに生成するメソッドを記述します
n
。各要素は、選択される確率が等しい必要があります`
この質問は「コーディングインタビューのクラック」から選択され、解決策は次のとおりです。
要素を配列の先頭にある要素と交換してから、配列に含まれるのは要素
j
以上であることを「覚えておく」ことができます。つまり、を選択subset[0]
すると、配列の最初の要素にarray[k]
置き換えられます。array[k]
を選択するsubset[1]
と、「デッド」と見なされ、1と配列の間array[0]
のランダムな要素が選択されます。次に、subset [1]を、に設定し、 array[1]に等しく設定します。要素0と1は「デッド」になりました。から、などから選択されるようになりました。y
size()
array[y]
array[y]
Subset[2]
array[2]
array[array size()]
私の質問は、乱数を選択する配列を縮小する場合、各番号が選択される確率です1/remaining_num_elements
。すべての要素でどのように平等に保たれますか?