Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 创建10个唯一的数字并保存到阵列_C#_Arrays_Random - Fatal编程技术网

C# 创建10个唯一的数字并保存到阵列

C# 创建10个唯一的数字并保存到阵列,c#,arrays,random,C#,Arrays,Random,我试图生成10个唯一的随机数并将其保存到数组中。 这是我的代码,但有运行时错误,但我不知道如何 有人能帮我吗 static void Main(string[] args) { int [] generatedNum = new int[10]; bool duplicated; int tempo; Random random = new Random(); // Create first number

我试图生成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]);
        }

    }
static void Main(字符串[]args)
{
int[]generatedNum=新int[10];
布尔重复;
内拍;
随机=新随机();
//创建第一个数字
generatedNum[0]=random.Next(1,25);
对于(int i=1;i<10;i++)
{
节奏=随机。下一步(0,25);
做
{
重复=错误;
foreach(generatedNum中的int x)
{
if(x==节奏)
重复=真;
}
如果(重复==真)
节奏=随机。下一步(0,25);
}while(duplicated==true);
//将唯一编号保存到数组
generatedNum[i]=节奏;
}
//检查已保存的号码
foreach(generatedNum中的int i)
{
WriteLine(“{0}”,generatedNum[i]);
}
}

您的最后一个
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]);
        }
for(int j=0;j这可能有助于:

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;
}
public List GetNumber()
{
随机=新随机();
列表值=新列表();
Add(random.Next(0,25));
while(value.Count<10)
{
int新值;
做
{
newValue=random.Next(0,25);
}while(values.Contains(newValue));
添加(newValue);
}
返回值;
}

要从y数组中获得x个唯一项,您需要一个

你把数字1-25放在一个袋子里,洗牌,然后拿走前10件物品。现在你将有10件介于1-25之间的随机物品。

这样行吗

如果允许您使用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();

/*试试这个,我用arraylist来存储数字

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);
    }

}
使用系统;
使用系统集合;
公共类样本列表
{
公共静态void Main()
{
//创建并初始化新的ArrayList。
ArrayList值=新的ArrayList();
随机=新随机();
Add(random.Next(0,25));
while(value.Count<10)
{
int新值;
做
{
newValue=random.Next(0,25);
}while(values.Contains(newValue));
添加(newValue);
}
打印值(值);
}
公共静态void打印值(IEnumerable myList)
{
foreach(myList中的对象obj)
Console.Write(“{0}”,obj);
Console.WriteLine(myList);
}
}

什么是运行时错误?为什么OP会得到这样的结果?代码少了几行但更难读?KISS同样,如果你从随机函数中得到“1,2,2,4,5,6,6,7,7,8”,你不需要:“.Select(x=>x.val)”,OP会得到什么?代码少了几行但更难读?KISS
  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();
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);
    }

}