gpt4 book ai didi

c# - 生成所有满足特定条件的数字

转载 作者:太空宇宙 更新时间:2023-11-03 18:22:20 25 4
gpt4 key购买 nike

我之前尝试过发帖,但在编辑问题 5 次后变得模糊不清,对任何人都没有帮助。所以这次我会适本地询问,所以请考虑帮助(如果您认为这是重复的,那么对只会让事情变得更糟的旧帖子这样做)

首先,我想使用 C# 编写一个非常简单的程序,它将随机显示符合以下所有条件的所有数字:

1.生成的数字必须在1123到5543之间

2.生成的号码只能有数字1,2,3,4,5

3.生成的数字不能重复

4.每个数字必须重复其中一位数字(如 1146 或 2627)不超过

当我做一些数学运算时,我得出的结论是这里有正好 300 个数字。

以下代码完成了部分工作:它生成一个只有数字 1-5 的 4 位数字。但是我不知道如何执行其他 3 条规则。这是我第一次使用 C#,(过去只有 VB.Net)所以我不知道如何进一步。

var chars = "12345";
var stringChars = new char[4];
var random = new Random();
for (int i = 0; i < stringChars.Length; i++)
{
stringChars[i] = chars[random.Next(chars.Length)];
}
var finalString = new String(stringChars);
Console.WriteLine(finalString)

只是关于 Console.WriteLine 的事情,我真的不关心输出是如何显示的。我看到一条建议,说明我将数据导出到 .txt 文件中,但我所关心的只是立即看到所有数字,但分开(用换行符或逗号)或双倍间距或任何东西)。

我开头所说的“随机”并不是完全随机的;我的意思是从 300 种可能性中随机抽取,直到全部完成。

我不关心它们是否有序,我可以使用一些在线服务来订购它们,以便让事情变得更容易。


提前致谢,请注意,这不是家庭作业问题,因为“允许”和“必需”。背景故事与 Stack Overflow 无关,所以我省略了它。

就像我说的,如果您认为这是重复的,那不是。另一个帖子太乱了。


编辑:

我又试了一遍,发现只有60个数。这是我做的

(这是数学,但我把它放在那里是为了理解)

我放置了 4 个破折号作为选项的插槽。 _ _ _ _

对于第一个“插槽”,我有五个选项 (1-5),所以我写了 5。由于必须重复一个数字,因此下一个必须是唯一的选项(我之前认为我们仍然有 5 个选项) ).因此,由于我不能有 2 个重复的数字,所以在一个数字出来后,还有 4 个数字。然后最后一位数字只有 3,所以我们在我的“插槽”上查看 5、1、4、3。然后我将它们相乘得到总的可能性 5x1x4x3 = 60 个总数。

我知道这可能与本网站无关,但我认为有必要了解代码才能正常工作。


再次感谢。

最佳答案

试试这段代码。它创建一个范围内的所有数字,然后对其进行洗牌:

var validDigits = new HashSet<char> {'1', '2', '3', '4', '5'};
var numbers = Enumerable.Range(1123, 5543 - 1123 + 1)
.Where(i => i.ToString().All(c => validDigits.Contains(c))) // only 1, 2, 3, 4, 5
.Where(i => i.ToString().Distinct().Count() == 3) // only one repeated number
.OrderBy(x => Guid.NewGuid()) // shuffle numbers
.ToArray();

现在你可以打印每个数字到控制台

foreach (var number in numbers)
Console.WriteLine(number);

关于c# - 生成所有满足特定条件的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48275988/

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