怎么向一个长度为100的数组随机不重复插入一到一百
如何向一个长度为100的数组随机不重复插入一到一百
如题,这是我今天碰到一个面试题,不会做...
------解决方案--------------------
我只會一遍又一遍的去判斷。。。
------解决方案--------------------
int[] num=new int[100]
Random r = new Random();
string k=",";
for(int j=0;j<100;j++)
{
while(true)
{
int i = r.next(1,100);
if(!k.Contains(","+i.ToString()+","))
{
num[j]=i;
k=k+i.ToString()+","
continue;
}
}
}
思路如此....
------解决方案--------------------
如题,这是我今天碰到一个面试题,不会做...
------解决方案--------------------
我只會一遍又一遍的去判斷。。。
------解决方案--------------------
int[] num=new int[100]
Random r = new Random();
string k=",";
for(int j=0;j<100;j++)
{
while(true)
{
int i = r.next(1,100);
if(!k.Contains(","+i.ToString()+","))
{
num[j]=i;
k=k+i.ToString()+","
continue;
}
}
}
思路如此....
------解决方案--------------------
- C# code
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();
------解决方案--------------------
我比较喜欢用随机数来做索引:
- C# code
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的数组呢?
------解决方案--------------------
学习 。。
我的技术不是很高,所以我也只能这么思考:
- C# code
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楼的想法不错
题目有点变态,要求不重复又要求随机,感觉矛盾了(也就是说这个随机不是正真的随机),搞不好正确答案是“该题目矛盾”。