gpt4 book ai didi

algorithm - 如何从与另一个集合成比例的集合中随机选择定义数量的元素?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:19:24 24 4
gpt4 key购买 nike

简介

S1 = {e11, e12, e13,...,e1n} S2={e21, e22, e23,...,e2i} ,S3={e31, e32, e33,...,e3j}, S4 ={e41, e42, e43,...,e4k} 的集合float 维度 n、i、jk 的元素。

对于集合 S1,我们希望从 S2S3S4。子集的维度应等于 10 x |S1|


问题

由于我是随机S2S3S4 中选择元素的子集。子集的所有元素有可能或概率仅选自S4仅来自S2S3 仅来自S2

我们可以使用什么公式来满足以下约束:

  • 子集的元素选自S2S3S4
  • 子集的维度等于10 x S1 的维度
  • 我们从每个集合中选择至少 1 个元素

我们还必须考虑到集合具有不同的维度。


例子

S1 = {1.0, 2.0}
S2 = {4.0, 5.0, 6.0}
S3 = {7.0, 8.0, 9.0, 23.0, 24.0, 25.0, 26.0, 30.0, 100.0, 200.0, 300.0, 400.0, 500.0, 600.0}
S4 = {10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0}

随机子集的大小是10 x |S1| = 20。我们必须从 S2、S3S4 中随机选择 20 个元素。


联盟

S2 ∪ S3 ∪ S4 = {4.0, 5.0, 6.0, 100.0, 200.0, 300.0, 400.0, 500.0, 600.0, 7.0, 8.0, 9.0, 23.0, 24.0, 25.0, 26.0, 30.0, 100.0, 200.0, 300.0, 400.0, 500.0, 600.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0}

|S2 ∪ S3 ∪ S4| = 30

如果我们从 |S2 ∪ S3 ∪ S4| 中随机选择 20 个元素,我们可能有机会选择 { 4.0、5.0、6.0}

最佳答案

给你:

        Random random = new Random(DateTime.Now.Millisecond);

HashSet<float> set1 = new HashSet<float>(...);
HashSet<float> set2 = new HashSet<float>(...);
HashSet<float> set3 = new HashSet<float>(...);
HashSet<float> set4 = new HashSet<float>(...);

set2.UnionWith(set3);
set2.UnionWith(set4);

IEnumerable<float> resultSet = set2.OrderBy(x => random.Next()).Take(set1.Count*10);

关于algorithm - 如何从与另一个集合成比例的集合中随机选择定义数量的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35919980/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com