数组中的随机数只有一次c#[复制]

问题描述 投票:0回答:3

这个问题在这里已有答案:

我想生成随机数并将它们放在一个数组中,但它们只应在此数组中出现一次。这就像一个迷你乐透游戏。这是我现在的代码:

int[] arrA = new int[10];
Random random = new Random();

for (int i = 0; i <= arrA.Length -1; i++)
{           
    arrA[i] = random.Next(1, 15);
    Console.WriteLine(arrA[i]);
}

Console.ReadKey();

生成随机数并将其放入此阵列中。我只需要知道如何编程它们只出现一次。

c# arrays random
3个回答
0
投票
  int[] arrA = new int[10];
    Random random = new Random();

    for (int i = 0; i <= arrA.Length - 1; i++)
    {
        var number = random.Next(1, 15);
        while (arrA.Any(n => n == number))
        {
            number = random.Next(1, 15);
        }

        arrA[i] = number;
        Console.WriteLine(arrA[i]);
    }


    Console.ReadKey();

1
投票

使用HashSet<T>。集合是一个不包含重复元素的集合,其元素没有特定的顺序。

像这样的东西:

using System;
using System.Collections.Generic;

HashSet<int> numbers = new HashSet<int>();
for (int i = 0; i < 10; i++)
{
    // Start with a random number
    //
    int value = random.Next(1,15);

    // Check whether you already have that number
    // Keep trying until you get a unique
    //
    while (numbers.Contains(value)) {
        value = random.Next(1,15);
    }

    // Add the unique number to the set
    numbers.Add(value);
}
foreach (int i in numbers)
{
    Console.Write(" {0}", i);
}

0
投票

每次生成一个新数字时,不要立即将其放入数组中,而是从开始到当前位置检查数组(使用for循环)。如果不存在则插入生成的数字,否则生成新的数字并重复该过程。

© www.soinside.com 2019 - 2024. All rights reserved.