如果我有一个数组:
a = [1,2,3]
Run Code Online (Sandbox Code Playgroud)
如何随机选择数组的子集,以使每个子集的元素都是唯一的?也就是说,对于a可能的子集将是:
[]
[1]
[2]
[3]
[1,2]
[2,3]
[1,2,3]
Run Code Online (Sandbox Code Playgroud)
我无法生成所有可能的子集,因为a的实际大小非常大,因此有许多子集.目前,我正在使用"随机游走"的想法 - 对于a的每个元素,我'翻转一个硬币'并包括它,如果硬币出现在头上 - 但我不确定这是否实际上均匀地对空间进行采样.这感觉就像它向中间施力,但是这可能只是我的脑海做模式匹配,因为会有更多的中型possiblities.
我使用正确的方法,或者我应该如何随机抽样?
(我知道这更像是一种语言不可知和'数学'的问题,但我觉得它不是Mathoverflow的真正材料 - 我只需要一个实际的答案.)