读书人

怎么向一个长度为100的数组随机不重复

发布时间: 2012-08-14 10:39:57 作者: rapoo

如何向一个长度为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;
}
}
}

思路如此....
[解决办法]

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楼的想法不错
题目有点变态,要求不重复又要求随机,感觉矛盾了(也就是说这个随机不是正真的随机),搞不好正确答案是“该题目矛盾”。

读书人网 >C#

热点推荐