gpt4 book ai didi

c# - 一段时间后,随机数生成器给出相同的数字

转载 作者:行者123 更新时间:2023-12-02 02:26:49 28 4
gpt4 key购买 nike

我有一个代码,可以从一系列用户指定的数字中生成用户指定数量的随机数,而不重复。我遇到的问题是,有一段时间程序工作正常,然后它只是不断给出看起来相同的数字,这会破坏它。

这是完整的代码,其中一些是匈牙利语的,但如果您想亲自尝试看看问题到底是什么:程序首先询问您数字的范围(首先是最小值,然后是最大数字),然后然后是您想要生成的数字数量。之后,您将看到生成的数字……如果它决定不起作用,则不会看到。如果您确实获得了数字,如果您按“1”,它将再次生成您提供的相同数据,按“2”将允许您提供不同的参数,按“0”将退出程序。

如果需要,我可以翻译该程序来帮助解决它。

using System;
using System.Collections.Generic;

namespace numgen
{
class Program
{
static int quantity, min, max, temp;
static bool check = false;
static int control = 2;

public static void Main(string[] args)
{
var gen = new List<int>();
Random rnd = new Random();



while(control > 0) {

Console.Clear();

if(control == 2) {
Console.Write("Add meg a minimum számot: ");
min = int.Parse(Console.ReadLine());
Console.Write("Add meg a maximum számot: ");
max = int.Parse(Console.ReadLine());
Console.Write("Add meg a hány számot kérsz: ");
quantity = int.Parse(Console.ReadLine());
}

gen.Clear();
//gen.Add(rnd.Next(min, max));

while(gen.Count < quantity) {
temp = rnd.Next(min, max);
foreach(int num in gen) {
if(temp == num) {
check = true;
break;
}
}
if(!check) {
gen.Add(temp);
//Uncomment to see number getting generated and when the program breaks
//Console.WriteLine(gen[gen.Count-1]);
}
}

gen.Sort();
foreach(int num in gen){
Console.WriteLine(num);
}

Console.WriteLine("\n[2] Új adatok megadása");
Console.WriteLine("[1] Számok újragenerálása");
Console.WriteLine("[0] Kilépés");
control = int.Parse(Console.ReadLine());
}
}
}
}

最佳答案

HashSet 是完成此任务的绝佳选择。元素作为键添加 - 因此它将拒绝集合中已有的任何值。

尝试这样的事情:

    private static void TestHashSet(int min, int max, int quantity)
{
var gen = new HashSet<int>();
Random rnd = new Random();

while (gen.Count < quantity)
{
var temp = rnd.Next(min, max);
gen.Add(temp);
}

gen.AsEnumerable().OrderBy(s => s).ToList().ForEach(x => Console.WriteLine(x));
}

关于c# - 一段时间后,随机数生成器给出相同的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59806493/

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