我想实现一个交错数组,其长度是随机的。但是用了这段代码以后,交错数组就变成矩形数组了。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...
{
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...
解决方案 »
- |ZYCWPF| 如何对WPF的RichTextBox进行关键字替换呢? 谢谢
- SQL Server Like 查询问题
- C# 怎么把JSON解析到对象
- 只要一修改源文件再生成就提示我失败
- Excel 11.0 Objct Library组件的版本问题
- 在不同线程实现同一socket的收发
- GameObject[] cannonBalls= new GameObject[maxCannonBalls] GameObject 是一个类 maxCannonBalls=8 ;
- 怎样制作vs2005windows安装文件?
- .....................能谈谈你做报表打印的心得和困难(不使用水晶报表的)
- C#修改功能和添加功能出现错误,好像跟标识列有关,麻烦大神们看一下
- DevExpress.XtraGrid问题
- membership用户和角色以及访问规则都建立后,如何登陆!
{
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;
}
}
这句放在外面试试。
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
结果却成了矩形数组
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
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);
}
}
}
}