用随机值填充数组[19]。 | c#WP7

时间:2014-04-08 19:59:22

标签: c# arrays windows-phone-7 random numbers

问题:

嘿,我正在尝试设计一个方法,用一个20个随机数填充数组[19],每次运行程序时都会有所不同。

我希望这些值介于1-4之间,这些值将根据结果编号激活/停用一系列if语句。

我不知道如何启动这个系统,我做一个foreach循环吗?

示例:

我运行我的程序,例如随机功能设置值:

数组[4] = 3

数组[5] = 4

这意味着" 3"将被激活,这意味着" 4"的另一个If语句将被激活......其余的将被激活。

这将继续,直到处理完所有20个数组值。

问题:

不知道如何布置这个代码,相对较新的c#程序员,甚至这样的例子会有所帮助。

3 个答案:

答案 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;
     }