将random从方法返回到数组

时间:2016-06-27 06:56:05

标签: c# arrays methods return

在我的代码中,我有静态int方法,它应该返回一个随机整数数组。问题是当我打印一个数组时,只有最后一个数字是随机的int,而其他的int都是零。

static void Main(string[] args)
{
    int a = int.Parse(Console.ReadLine());
    int[] array = mtd(a);
    for (int i = 0; i < array.Length; i++)
    {
        Console.WriteLine(array[i]);
    }
}
public static int[] mtd(int b)
{
    int[] arr = new int[b];
    Array.Resize<int>(ref arr, b);
    Random rand = new Random();
    for (int i = 0; i < arr.Length; i++)
    {
        arr.SetValue(rand.Next(1, 5), arr.Length - 1);
    }
    return arr;
}

3 个答案:

答案 0 :(得分:3)

在方法for的{​​{1}}循环中,您始终使用mtd设置数组arr的最后一个值。请改用arr.Length - 1

i

for (int i = 0; i < arr.Length; i++) { arr[i] = rand.Next(1, 5); }

arr.SetValue

答案 1 :(得分:0)

工作一:

public static int[] mtd(int b)
    {
        int[] arr = new int[b];
        Random rand = new Random();
        for (int i = 0; i < arr.Length; i++)
        {
            arr.SetValue(rand.Next(1, 5), i);
        }
        return arr;
    }

编辑:因为这里没有Array.resize,你已经定义了数组的长度。 (new int[b]将数组的长度设置为b)

您的问题是您从未使用i,因此您只需设置数组最后一个值的值。

答案 2 :(得分:0)

我修改并简化了您的代码:

    public static int[] mtd(int b)
    {
        int[] arr = new int[b];
        Random rand = new Random();
        for (int i = 0; i < arr.Length; i++)
            arr[i] = rand.Next(1, 5);
        return arr;
    }