如果我有一个数组:
a = [1,2,3]
如何随机选择数组的子集,使每个子集的元素都是唯一的?也就是说,a
可能的子集是:
[]
[1]
[2]
[3]
[1,2]
[2,3]
[1,2,3]
我无法生成所有可能的子集,因为 a 的实际大小非常大,所以有很多很多子集。目前,我正在使用“随机游走”的想法——对于 a 的每个元素,我会“抛硬币”并在硬币正面朝上时将其包括在内——但我不确定这是否真的均匀地采样了空间。感觉它偏向中间,但这可能只是我在做模式匹配的想法,因为会有更多中等大小的可能性。
我是否使用了正确的方法,或者我应该如何随机抽样?
(我知道这更像是一个与语言无关的“数学”问题,但我觉得这不是真正的 Mathoverflow 材料——我只需要一个实用的答案。)