我是编程的新手,所以请忍受我!
我试图将数组的部分设置为随机值,但是每当我运行程序时,它都会将数组的所有部分设置为相同的值。我希望它们都不同。
这是我的代码:
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]);
我可能完全缺少它,但是我无法说出我的代码出了什么问题!有人可以告诉我如何做到这一点,以便整个数组的所有十个部分都会产生不同的随机数?
更改以下内容:
Console.WriteLine("hahahaha look at this " + hello_array[0]);
:
Console.WriteLine("hahahaha look at this " + hello_array[i]);
您在每个循环中都在数组中打印相同的元素。
具有相同数量的行,您可以使用一些较新的C#功能来完成相同的结果(但没有所有混乱的细节)。
您将定义一个采用两个参数的通用方法:a 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();
}
}