私が現在取り組んでいる問題については、与えられたセットのべき集合から適度に均一なランダムな選択をしたいと思います。残念ながら、これは私がまったく研究していない統計(実際のプログラミングに取り掛かっている今、修正する必要があるもの)にぶつかるので、それを知っている何人かの人々を超えてソリューションを実行したかったのです。
与えられたセットのサイズがnの場合、サイズkの(nk)= n!/ [k!(nk)!]サブセットがあり、べき集合の合計サイズNは、からのkに対する(nk)の合計として与えられます。 0からn。(2 nとしても与えられますが、ここでは役に立たないと思います。明らかに間違っていた可能性があります)。
したがって、私の計画は、[0、1]を間隔に分割することです。
[0, (n 0)/N]
((n 0)/N, [(n 0) + (n 1)]/N]
([(n 0) + (n 1)]/N, [(n 0) + (n 1) + (n 2)]/N]
...
([N - (n n)]/N, 1]
アルゴリズム的には、間隔は、前の間隔の最大要素を新しい間隔の最大下限として取得し、それに(nj)/ Nを追加して、最大要素を取得することによって構築されます。それがはっきりしていることを願っています。
次に、[0、1]で均一なフロートを選択し、それが属する区間のインデックスにマッピングすることで、ランダムサブセットに含まれる要素の数を把握できます。そこから、適切なサイズのランダムなサブセットを選択できます。
私のスキームは、サブセットのサイズ(サブセットの総数に対して均一です。セット{1、2、..、)では明らかに均一ではありません。サイズのn})。
私はライブラリ(python
random.sample
)を使用して、指定されたサイズのサブセットを取得しているので、それが均一になると確信しています。
だから私の質問は、私が説明している方法で2つを組み合わせると、ランダムサイズのランダムサブセットの選択が均一になるかどうかです。答えが大変な作業である場合、これがどのように証明されるかについての指針を受け入れ、自分で作業を行うことができてうれしいです。また、これを行うためのより良い方法があれば、もちろん私はそれに満足しています。