我想实现一个交错数组,其长度是随机的。但是用了这段代码以后,交错数组就变成矩形数组了。public static void Main(string[] args)
{
    string[] lv1;
    string[][] lv2;
    
    lv1 = GetRandom();
    
    lv2 = new string[lv1.Length][];
    for(int i = 0; i < lv1.Length; i++){
        lv2[i] = GetRandom();
    }
}//获取一个长度随机的数组。
public static string[] GetRandom(){
    Random rand = new Random();
    int length = rand.Next(0,10);
    string[] arr = new string[length];
    for(int i = 0; i < length; i++){
        arr[i] = "!" + i.ToString() + "!";
    }
    return arr;
}难道这样不能让交错数组的子数组长度随机吗?比如,期望的结果是
string[3][]
 - string[0][3]
 - string[1][4]
 - string[2][6]
结果却成了矩形数组
string[3][]
 - string[0][3]
 - string[1][3]
 - string[2][3]
另外再问一下:有没有三维以上的交错数组?如string[][][] array...

解决方案 »

  1.   

    using System;class Program
    {
        public static void Main(string[] args)
        {
            string[] lv1;
            string[][] lv2;        lv1 = GetRandom();        lv2 = new string[lv1.Length][];
            for (int i = 0; i < lv1.Length; i++)
            {
                lv2[i] = GetRandom();
            }        foreach (string [] var in lv2)
            {
                foreach (string v in var)
                {
                    Console.Write(v + " ");
                }
                Console.WriteLine();
            }
        }    //获取一个长度随机的数组。
        public static string[] GetRandom()
        {
            Random rand = new Random(unchecked((int)DateTime.Now.Ticks));
            System.Threading.Thread.Sleep(1);
            int length = rand.Next(0, 10);
            string[] arr = new string[length];
            for (int i = 0; i < length; i++)
            {
                arr[i] = "!" + i.ToString() + "!";
            }
            return arr;
        }
    }
      

  2.   

    Random rand = new Random();
    这句放在外面试试。
      

  3.   

    怎么可能,你是说你RANDOM生成的数组下标都相同,怎么可能呢?
      

  4.   

    你是属于概念不清的类型。
    string[3][] 
    - string[0][3] 
    - string[1][3] 
    - string[2][3] 
    不就是个交错数组吗,交错数组是一维数组的数组,
    可以理解成它是个一维数组,数组的元素是一维数组,
    string[3][] 
    - string[0][3] 
    - string[1][4] 
    - string[2][6] 
    你看这个叫什么,这叫四不像,string[3]已经明确了它的元素个数是
    3个,后边咋会有3,4,6
      

  5.   


    结果却成了矩形数组 
    string[3][] 
    - string[0][3] 
    - string[1][3] 
    - string[2][3]
     
    The problem lies in the random number generation.
    The default Random() constructor will use the current time as the seed. 
    Because progrom runs very fast, your random seeds became the same and you got the same random number.另外再问一下:有没有三维以上的交错数组?如string[][][] array...
    yes
      

  6.   

    我写了点代码,还请楼主指点:
    namespace StaggeredArray
    {
        class Program
        {
            static void Main(string[] args)
            {
                Random rm=new Random();
                int length = rm.Next(1, 9);
                string[][] array = new string[length][];
                Staggered staggered = new Staggered(array);
            }
        }
        class Staggered
        {
            string[][] array;
            Random rm = new Random();
            public Staggered(string[][] _array)
            {
                this.array = _array;
                for (int i = 0; i < array.Length; i++)
                {
                    array[i] = new string[rm.Next(1, 100)];
                    Console.WriteLine("array[" + i + "].Length=" + array[i].Length);
                }
            }
        }
    }