日期:2014-05-18 浏览次数:20904 次
List<int> list = new List<int>(); for (int i = 0; i < 100; i++) { Random r = new Random(1); int value = r.Next(101); if (list.Contains(value)) { while (true) { value = r.Next(1,101); if (!list.Contains(value)) { list.Add(value); break; } } } else { list.Add(value); } } string text = list.ToString();
------解决方案--------------------
我比较喜欢用随机数来做索引:
Random rnd=new Random(); int[] array=new int[100]; ArrayList list=new ArrayList(); for(int i=1;i<=100;i++) { list.Add(i); } for(int j=0;j<100;j++) { int tempRandom=rnd.Next(0,100-j); int tempValue=(int)list[tempRandom]; array[j]=tempValue; list.Remove(tempValue); }
------解决方案--------------------
可以建立一个仓库,放入1-100,然后随机取一个,插入到目标数组,插入一个就从仓库里去掉这个.再随机的插,然后去掉插入的这个数.
这是思路,不知道能不能实现呢?
我说的仓库是不是也可以定义为一个100的数组呢?
------解决方案--------------------
学习 。。
我的技术不是很高,所以我也只能这么思考:
int[] Num= new int[100]; bool[] B = new bool[101]; int Temp = new int() ; Random R = new Random(); for (int i = 0; i < 100; i++) { Again: Temp = R.Next(1, 101); if (B[Temp] == false) { Num[i] = Temp; B[Temp] = true; } else { goto Again; } } for (int x = 0; x < 100; x++) { Console.WriteLine("{0} :{1}", x, Num[x]); }
------解决方案--------------------
如果硬是要做的话,6楼的想法不错
题目有点变态,要求不重复又要求随机,感觉矛盾了(也就是说这个随机不是正真的随机),搞不好正确答案是“该题目矛盾”。