用C#编写程序,生成一个长度为100的数组,然后向数组中随机插入1~100之间的数,要求数组各元素的值不重复.

2024-12-26 12:20:15
推荐回答(2个)
回答1:

你这个问题有歧义诶,到底是 把数随机插入到数组中,还是 在数组中插入的1~100随机数
楼上是第一个,结果b数组值为1~100排序的数。
下面是第二个,结果数字是随机的,但插入是顺序插入的代码如下:
int[] arr = new int[100];
Random r = new Random(DateTime.Now.Millisecond);
for(int i=0;i<100;i++)
{
int temp = r.Next(1, 100);
while(true){
if (Array.IndexOf(arr, temp) == -1)
{
arr[i] = temp;
break;
}
else
{
temp = r.Next(1, 100);
}
}
System.Console.WriteLine(arr[i]);
}
System.Console.Read();

这个算法效率会有点低,为了防止重复,循环越到后面尝试的随机数会越来越多。
可以改为多创建一个值为1~100的数组,随机取里面的值放到新数组,然后删去,这个就自己去实现吧。

回答2:

试试这个方案:
先定义一个数组,例如int a[100];
初始化数组:
for(int i=0;i<100;i++){
a[i]=0;
}
假设生成的数组为b,程序如下:
int k=0;
Random r=new Random();
while(k<100){
int index=r.Next(100);
if(a[index]==0){
b[k++]=index+1;
a[index]=1;
}
}