所以我试图制作一个随机数生成器:
private static void init()
{
int[] integ = new int[10];
Random random = new Random();
// init
foreach (int integer in integ)
{
integ[integer] = rand.Next(5,35);
}
foreach (int b in integ)
{
Console.WriteLine("Byte = " + b);
}
}
static void Main(string[] args)
{
init();
Console.ReadKey();
}
但出于某种原因,当我运行它时,会打印出来:
Byte = (*random number here*)
Byte = 0
Byte = 0
etc...
我多次运行以确保,每次只有第一个非零数字。
提前感谢任何建议。
答案 0 :(得分:4)
让我们来看看它的作用:
foreach (int integer in integ)
{
integ[integer] = rand.Next(5,35);
}
基本上,foreach
循环遍历integ
的值(最初都是0
),并在integ
中设置该值。 {1}}到一个随机数。所以它只会填充数组中的第一项。
要初始化数组,请改为使用for
循环:
for (int i = 0; i < integ.Length; i++)
{
integ[i] = rand.Next(5,35);
}
或者如果你对Linq的一点点感到满意:
Random random = new Random();
int[] integ = Enumerable.Repeat(0, 10)
.Select(i => random.Next(5, 35))
.ToArray();
正如 Blindy 指出的那样,如果你想要做的就是打印价值,你甚至不需要数组:
Random random = new Random();
for (int i = 0; i < 10; i++)
{
Console.WriteLine("Byte = {0}", rand.Next(5,35));
}