gpt4 book ai didi

c# - 是我的彩票程序错了吗?还是我这么倒霉?

转载 作者:太空狗 更新时间:2023-10-30 00:25:38 27 4
gpt4 key购买 nike

我做了一个抽奖程序:http://yadi.sk/d/bBKefn9g4OC7s

这是完整的源代码:http://yadi.sk/d/rnQMfrry4O8cu

Random rnd = new Random();
int[] loto;
loto = new int[7];

for (int f = 1; f <= 6; f++) {
loto[f] = rnd.Next(1, 50); // Generating random number between 1-49

for (int h = 1; h < f; h++) {
if (loto[f] == loto[h]) { // Check with other numbers for the case of duplicate
loto[f] = rnd.Next(1, 50); // If there is a duplicate create that number again
}
}
}

这部分我在 1-49 之间随机生成 6 个不同的数字

另外我想知道在这个例子中,嵌套循环是否增加了自发性?

我最多只能得到 3-4 个,是这个程序错了还是我太不走运了?

(注意:这是我的第一个程序)

对于所有试图帮助我的人:我真的是编程的初学者(我猜是 c# 昨天 | c++ 3 周),如果你们能在代码中阐明你的意思,那就太好了。并且请不要给我极端的硬编码示例(我不想退出 c#)

最佳答案

您的方法看起来不安全,因为在内循环中再次从 Random 获取值并不能保证它将返回不重复的值。对于 1-49 的低值,您可以使用像这样的简单随机选择算法

    var numbers = new List<int>();
for (int i = 1; i <= 49; i++) {
numbers.Add(i);
}
Random r = new Random();
var loto = new int[6];
for (int f = 0; f < 6; f++) {
int idx = r.Next(0, numbers.Count);
loto[f] = numbers[idx];
numbers.RemoveAt(idx);
}

请注意,就性能而言,这远非最佳解决方案,但如果您只在几秒或更长时间内运行一次,那么它应该没问题。

关于c# - 是我的彩票程序错了吗?还是我这么倒霉?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16250985/

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