加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 随机抽样数组的唯一子集

发布时间:2020-12-16 21:10:54 所属栏目:百科 来源:网络整理
导读:如果我有一个数组: a = [1,2,3] 如何随机选择数组的子集,以使每个子集的元素都是唯一的?也就是说,对于可能的子集将是: [][1][2][3][1,2][2,3][1,3] 我无法生成所有可能的子集,因为a的实际大小非常大,因此有许多子集.目前,我正在使用“随机游走”的想法 –
如果我有一个数组:
a = [1,2,3]

如何随机选择数组的子集,以使每个子集的元素都是唯一的?也就是说,对于可能的子集将是:

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

我无法生成所有可能的子集,因为a的实际大小非常大,因此有许多子集.目前,我正在使用“随机游走”的想法 – 对于a的每个元素,我’翻转硬币’并且如果硬币出现在头上则包括它 – 但我不确定这是否实际上均匀地对空间进行采样.感觉它偏向中间,但这可能只是我的想法进行模式匹配,因为会有更多中等大小的可能性.

我使用正确的方法,或者我应该如何随机抽样?

(我知道这更像是一种语言不可知和’数学’的问题,但我觉得它不是Mathoverflow的真正材料 – 我只需要一个实际的答案.)

解决方法

继续你原来的“硬币翻转”的想法.它统一地对可能性的空间进行采样.

你觉得它偏向于“中间”,但那是因为“中间”的可能性数量最多.想一想:只有1种可能没有元素,只有1种含有所有元素.有N个可能性有1个元素,N个可能有(N-1)个元素.随着所选元素的数量越来越接近(N / 2),可能性的数量增长得非常快.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读