问题:
嘿,我正在尝试设计一个方法,用一个20个随机数填充数组[19],每次运行程序时都会有所不同。
我希望这些值介于1-4之间,这些值将根据结果编号激活/停用一系列if语句。
我不知道如何启动这个系统,我做一个foreach循环吗?
示例:
我运行我的程序,例如随机功能设置值:
数组[4] = 3
数组[5] = 4
这意味着" 3"将被激活,这意味着" 4"的另一个If语句将被激活......其余的将被激活。
这将继续,直到处理完所有20个数组值。
问题:
不知道如何布置这个代码,相对较新的c#程序员,甚至这样的例子会有所帮助。
答案 0 :(得分:2)
好吧,对于初学者来说,一个20值的数组将被声明为int [20](而不是19)。声明的[]中的数量是元素的数量。此后,我们使用基于0的索引索引到数组。所以19是声明为int [20]的元素的最大索引。
要回答你的问题,你想要的是for循环(可能不是foreach):
int[] flags = new int[20];
Random rng = new Random();
for (int i = 0; i < flags.Length; i++)
flags[i] = rng.Next(1, 5);
为了解释,你循环遍历每个索引(使用i作为迭代变量)每次分配你的随机数。参数是(1,5)因为Random使用包含min(1是可能的)和独占max(5不是)。
顺便说一下,确保每个类使用一个Random实例(可能每个程序)。如果在短时间内多次调用创建函数,重新创建随机类可以减少生成的数字的随机性。
编辑:重读你的问题我意识到你可能会问如何处理这样一个数组。我仍然会使用for循环,并在循环中运行if语句:
for (int i = 0; i < flags.Length; i++)
{
if (flags[i] == 3)
...
//Or
switch(flags[i])
{
case 3:
...
break;
}
}
您可能需要某种并行数组,其中包含&#34;开/关&#34;每个功能的标志。如果没有更多的代码/描述,很难说。
答案 1 :(得分:1)
你需要保持阵列周围,还是只处理1到4之间的20个随机数?
您可以像这样构建数组:
var a = new int[20];
var r = new Random();
for(var i = 0; i < 20; i += 1) {
a[i] = r.Next(1, 5);
}
如果您不需要保留阵列,可以将该代码修改为:
var r = new Random();
for(var i = 0; i < 20; i += 1) {
switch(r.Next(1, 5)) {
case 1:
// do something
break;
case 2:
// do something
break;
case 3:
// do something
break;
case 4:
// do something
break;
}
}
答案 2 :(得分:-1)
第一个问题是&#34; ...每次运行程序时都不同&#34; - 一种方法是从生成当前时间的系统开始,并将其用作起始变量。 在目标C中:
NSDate *now=[[NSDate alloc] init];
double nowValue=[now timeIntervalSinceReferenceDate];
[now release];
然后播种一个名为srandom()的函数并生成random()%4 + 1:
srandom(nowValue);
for(int I=0;I<20;I++){
Array[I]=random()%4+1;
}