在C#中使用随机但唯一的数字填充数组

时间:2016-03-13 17:28:58

标签: c#

好吧我知道这样的帖子很少,但我只需要使用循环(for,do,while)和if,否则用随机但唯一的数字填充数组,那么我该如何编辑这段代码

        int[] x = new int[10];
        Random r = new Random();

        int i;
        for (i = 0; i < x.Length; i++) {

            x[i] = r.Next(10);
            Console.WriteLine("x[{0}] = {1}", i, x[i]);
        }

2 个答案:

答案 0 :(得分:1)

您可以检查数组中是否已存在新生成的数字,如果没有,则将其添加到数组中,如果是,则生成新数据。

例如:

class Program
{
    static void Main(string[] args)
    {
        int[] x = new int[10];
        Random r = new Random();

        int i;
        for (i = 0; i < x.Length; i++)
        {
            var next = 0;                
            while (true)
            {
                next = r.Next(10);
                if (!Contains(x, next)) break;                    
            }

            x[i] = next;
            Console.WriteLine("x[{0}] = {1}", i, x[i]);
        }

        Console.ReadLine();
    }

    static bool Contains(int[] array, int value)
    {
        for (int i = 0; i < array.Length; i++)
        {
            if (array[i] == value) return true;
        }
        return false;
    }
}

答案 1 :(得分:0)

如果不检查生成的数字是否已在数组中显示,则无法解决此任务。

因此,您必须先生成新的数字,然后再将其插入阵列检查uniq。