【发布时间】:2019-04-19 08:52:42
【问题描述】:
我有一个包含 100 个元素的数组,其中我随机选择了 4 个(不能选择两次相同的元素)。我多次重复这个过程,试图得到每一种可能的组合。不过一定有更有效的方法。
我将如何创建一个只创建所有可能组合的循环?
double[][] picked = new double[4][];
int[] chosen = new int[4];
Random rnd = new Random();
List<int> exclude = new List<int>();
int z = 0;
while (z < 4)
{
picked[z] = new double[rows];
int x = rnd.Next(0, rows);
if (exclude.Contains(x))
{
continue;
}
exclude.Add(x);
// do stuff with the chosen elements
z++;
}
编辑:作为重复链接的问题不同,因为它允许选择重复的元素。
【问题讨论】:
-
Algo 上存在一个关于所有排列/子集大小为 N.1 的虚拟令牌到找到它的那个的问题
-
每一种可能的组合是什么?那些随机挑选的4个元素?这 4 个元素对 100 个其他元素?
-
你能告诉我们你自己尝试过什么吗?这种感觉就像我们在做你的功课。
-
@xdtTransform,你是stackoverflow.com/questions/127704/…
-
@Jordec 添加了代码,我的“作业”已经完成,代码有效,我只是想让它更有效率。
标签: c#