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

如题所述

第1个回答  推荐于2016-08-01
你这个问题有歧义诶,到底是 把数随机插入到数组中,还是 在数组中插入的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个回答  2011-11-11
试试这个方案:
先定义一个数组,例如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;
}
}

用C#编写程序,生成一个长度为100的数组,然后向数组中随机插入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...

...int 数组 长度为100,并向其中随机插入 1-100 ,并且不能重复_百度...
\/\/\/ 生成数组 \/\/\/ \/\/\/ <returns>数组<\/returns> public int[] produceRandomArray(){ Random rd=new Random();for (int i = 0; i < 100; ++i){ \/\/int temp=0;do { \/\/temp = rd.Next(1, 101);\/\/arr[i] = temp;arr[i] = rd.Next(1, 101);} while (checkNumber(i))...

...编写一个数组 长度一百 然后插入1-100之间的数字 不能重复
3L程序可以,但是效率太低【复杂度o(n2)】,更好的做法是,先把1-100放入一个列表,然后用Random从0-99来获取位置,每得到一个值就从列表pop出来,放入数组;因为位置始终不变,而列表在缩小,所以每次都要这么变动:index=index%列表长度;直到列表里面只有1个元素的时候,直接把最后一个数字放入数组...

c#中一个1~100的随机值怎样表示
\/\/c#中一个1~100的随机值产生数据的时候难免会重复,因此要考虑到去重复 \/\/1.产生一个int长度为100数组,\/\/ 2并向其中随机插入1-100,并且不能重复。int [] intnum =new int [100];ArrayList Arraylist = new ArrayList();Random ran = new Random();while (Arraylist.Count<100){ int A ...

c语言,长度为100的一维数组,初始值为100以内随机数,并求出最大值最小...
include #include <stdio.h>#include <stdlib.h>int main(){ int i = 0, j,k,t; srand((unsigned int)time(NULL)); int a[100]; for(i=0;i<=99;i++) \/\/产生随机数组1到100 {a[i]=rand() % 100;a[i]++;} { for(i=0;i<99-1;i++) \/\/最小值 { ...

用C#编写程序,生成一个长度为10的数组,然后向数组随记插入1-10,要求...
int j = 0;ArrayList iList = new ArrayList();for (int i = 0; i < 10; i++){ Random rd = new Random();do { j = rd.Next(1, 11);} while (iList.Contains(j));iList.Add(j);} foreach (int iRand in iList){ Console.WriteLine(iRand);} ...

产生随机数,插入数组?
\/\/产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。对上面生成的数组排序,需要支持升序、降序两种顺序#include <stdio.h> include include <stdlib.h> void outputNum(int *num, int size){ for(int i = 0; i < size; i++)printf("%d ", num[i]);printf("\\n...

c# 0-100不不重复随机数 乱序填充到100的数组中
\/\/0-100有101个数,但你只是放到100长度的数组,到时自己修改下 Random rbd = new Random();ArrayList myarray = new ArrayList();int[] num = new int[100];while (myarray.Count <= 100){ int next = rbd.Next(0,101);if (!myarray.Contains(next)){ myarray.Add(next);} } for...

C# 如何生成不重复的1-100随机数。
有两种思路:1、随机生成一个1-100的数,然后判断重复,如果重复再生成一次;2、创建一个数组,元素内容为1-100,对元素随机排序。请参考下面的代码 public void GenerateRandomNums(){ List list = new List();Random rand = new Random();int value;while (true){ if (list.Count == 20){ ...

用C#编辑程序,求1~100之间所有奇数的和
可以参考下面的代码:int[] num = new int[100]; \/\/创建一个1到100的数组 for (int i = 0; i < 100; ){ num[i] = ++i;} var q = from o in num where o % 2 == 1 select o; \/\/使用linq筛选奇数 int sum = q.Sum(); \/\/使用Sum函数获取奇数和 ...

相似回答