Случайная выборка уникальных подмножеств массива

Если у меня есть массив:

a = [1,2,3]

Как мне случайным образом выбрать подмножества массива, чтобы элементы каждого подмножества были уникальными? То есть для a возможными подмножествами были бы:

[]
[1]
[2]
[3]
[1,2]
[2,3]
[1,2,3]

Я не могу сгенерировать все возможные подмножества, поскольку реальный размер a очень велик, поэтому существует много-много подмножеств. В настоящий момент я использую идею «случайного блуждания» - для каждого элемента я «подбрасываю монету» и включаю ее, если монета выпадает орлом, но я не уверен, действительно ли это равномерно отбирает пространство. Он чувствует , что смещается в сторону середины, но, возможно, это просто мой разум, выполняющий сопоставление с образцом, поскольку будет больше возможностей среднего размера.

Правильно ли я использую подход, или как мне выбирать произвольную выборку?

(Я понимаю, что это скорее вопрос языковой агностики и «математики», но я чувствовал, что это не совсем материал для Mathoverflow - Мне просто нужен практический ответ.)

7
задан Phrogz 19 January 2012 в 19:02
поделиться