2

我是编程新手,所以请多多包涵!

我正在尝试将数组的各个部分设置为随机值,但是每当我运行程序时,它会将数组的所有部分设置为相同的值。我希望他们都与众不同。

这是我的代码:

int[] hello_array = new int[10];
        Console.WriteLine("Here");

        Random rndm = new Random();

        for (int j = 0; j < hello_array.Length; j++)
        {
            hello_array[j] = rndm.Next(99);
        }

        Console.WriteLine("Now Here");

        for (int i = 0; i < hello_array.Length; i++)
        {
            Console.WriteLine("hahahaha look at this " + hello_array[0]);

我可能完全错过了它,但我不知道我的代码有什么问题!有人可以告诉我如何使数组的所有十个部分生成不同的随机数吗?

4

2 回答 2

9

改变这个:

 Console.WriteLine("hahahaha look at this " + hello_array[0]);

对此:

 Console.WriteLine("hahahaha look at this " + hello_array[i]);

您在每个循环中都在数组中打印相同的元素。

于 2012-10-30T20:28:59.573 回答
1

使用相同的行数,您可以使用一些较新的 C# 功能来完成相同的结果(但没有所有杂乱的细节)。

您将定义一个带有两个参数的泛型方法:一个lambda 表达式(例如() => random.Next(99))和要生成的元素数。在方法内部,您将使用yield关键字返回工厂生成的新元素。

Random random = new Random();
foreach (var element in Generate(() => random.Next(99), 10))
{
    Console.WriteLine(element);
}

public static IEnumerable<T> Generate<T>(Func<T> factory, int elements)
{
    for (int generated = 0; generated < elements; generated++)
    {
        yield return factory();
    }
}
于 2012-10-30T20:50:25.037 回答