创建10个唯一数字并保存到数组中

本文关键字:数组 保存 10个 唯一 数字 创建 | 更新日期: 2023-09-27 18:06:53

我正在尝试生成10个唯一的随机数,并将其保存到一个数组中。
这是我的代码,但存在运行时错误,但我不知道如何操作。

有人能帮帮我吗?

static void Main(string[] args)
    {
        int [] generatedNum = new int[10];
        bool duplicated;
        int tempo;
        Random random = new Random();
        // Create first number
        generatedNum[0] = random.Next(1, 25);      
        for (int i = 1; i < 10; i++)
        {
            tempo = random.Next(0, 25);
            do
            {
                duplicated = false;
                foreach (int x in generatedNum)
                {
                    if (x == tempo)
                        duplicated = true;
                }
                if (duplicated == true)
                tempo = random.Next(0, 25);
            } while (duplicated == true);
            // Save unique number to array
            generatedNum[i] = tempo;
        }
        // To check the number saved
        foreach (int i in generatedNum)
        {
            Console.WriteLine("{0}", generatedNum[i]);
        }
    }

创建10个唯一数字并保存到数组中

这可能会有所帮助:

public List<int> GetNumber()
{
    Random random = new Random();
    List<int> values = new List<int>();
    values.Add(random.Next(0, 25));
    while (values.Count < 10)
    {
        int newValue;
        do
        {
            newValue = random.Next(0, 25);
        } while (values.Contains(newValue));
        values.Add(newValue);
    }
    return values;
}

要在y的数组中有x个唯一的项目,需要一个shuffle包。

你把你的数字1-25放在一个袋子里,洗牌,然后拿走前10个项目。您现在将有10个介于1&25.

您的最后一个foreach循环无效。i是值,而不是索引,所以你可以直接写:

// To check the number saved
foreach (int i in generatedNum)
{
    Console.WriteLine("{0}", i);
}

更改

 foreach (int i in generatedNum)
        {
            Console.WriteLine("{0}", generatedNum[i]);
        }

 for (int j=0;j<generatedNum.Length;j++)
        {
            Console.WriteLine("{0}", generatedNum[j]);
        }

这能在中工作吗

如果你被允许使用Linq,你可以试试这个

你可以设置你想要的范围

  Random rnd = new Random();
        var randomNumbers = Enumerable.Range(1, 100)
                                      .Select(x => new { val = x, order = rnd.Next() })
                                      .OrderBy(i => i.order)
                                      .Select(x => x.val)
                                      .Take(10).ToArray();
    static void Main(string[] args)
    {
        var generatedNum = new List<int>();
        var random = new Random();
        while (generatedNum.Count < 10)
        {
            var tempo = random.Next(0, 25);
            if (generatedNum.Contains(tempo)) continue;
            generatedNum.Add(tempo);
        }
        foreach (var i in generatedNum)
        {
            Console.WriteLine("{0}", i);
        }
    }

你的问题就在这里,不是吗?

    // To check the number saved
    foreach (int i in generatedNum)
    {
        Console.WriteLine("{0}", generatedNum[i]);
    }

/*尝试一下,我使用了一个数组列表来存储数字

using System;
using System.Collections;
public class SamplesArrayList
{
    public static void Main()
    {
        // Creates and initializes a new ArrayList.
       ArrayList values = new ArrayList();
        Random random = new Random();
        values.Add(random.Next(0, 25));
        while (values.Count < 10)
        {
            int newValue;
            do
            {
                newValue = random.Next(0, 25);
            } while (values.Contains(newValue));
            values.Add(newValue);
        }
        PrintValues(values);
    }
    public static void PrintValues(IEnumerable myList)
    {
        foreach (Object obj in myList)
            Console.Write("   {0}", obj);
        Console.WriteLine(myList);
    }
}