C#定义一个长度为100的数组,往数组里面随机添加1-100个数,不能重复

如题所述

C#语法我不懂。PHP我倒会点。对于你出的题目我有点疑问:不知道你的意思是“随机添加1-100个数”还是“随机添加1-100之中的某一个数”,我暂且理解为后者。
像你要的那个效果实现方法有很多,我这儿有一种,大概原理是定义一个数组,数组的键和值都是是1-100一一对应(如:a[1]=1,a[2]=2...a[100]=100),然后把数组打乱就行了。
其实只是语法不同而已,思路是一样的。
PHP代码:
//说明一下,PHP中任何变量前面都要加个$,语法这么规定的。
$a=array();
for($i=1;$i<=100;$i++){
$a[$i]=$i;
}
//以上三行代码产生一个键和值都是从1-100的数组a
$b=$a;//这个知道吧,把a赋值给b 操作一个副本,保留原来的a 完全可以不要
for($j=1;$j<=100;$j++){
$rnd=mt_rand(0,99);//mt_rand(val1,val2)函数产生从val1到val2之间的随机整数
$tmp=$b[$j];
$b[$j]=$b[100-$rnd];
$b[100-$rnd]=$tmp;
//以上三行代码交换数组中的两个元素,被替代的元素是$b[$j],替代元素是$b[100-$rnd]
}
print_r($b); //一个可以直接输出数组的函数,仅仅是用于显示而已
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-11-10
定义一个随机数,定义一个for循环,定义一个键值对的数组,
for(int i=0;i<100;i++){}
然后将随机生成的值存入数组里面,从第二个开始数开始
将生成的数与数组里面的进行对比,如果重复就返回,i--,就ok了本回答被提问者采纳
第2个回答  2010-11-09
class Program
{
static void Main(string[] args)
{
int[] intArray = new int[100];//定义一个整形数组
bool[] assigned = new bool[100];//bool类型数组
Random rand = new Random();//实例化一个Random对象
for (int i = 0; i < 100; i++)
{
int intindex = 0;
bool foundInt = false;
while (foundInt == false)
{
intindex = rand.Next(100);
//if语句用来判断随产生地机数是否是第一次出现
if (assigned[intindex] == false)
foundInt = true;
}
//把第一次产生的随机数赋给数组
intArray[i ] = intindex ;
assigned[intindex] = true;
}
foreach (int i in intArray)
Console.Write(" {0}", i);//输出随机数
Console.ReadLine();//停顿一下
}
}
调试过了,行.
呵呵,希望对你有用.
第3个回答  2017-09-24
int[] intArr=new int[100];
ArrayList myList=new ArrayList();
Random rnd=new Random();
while(myList.Count<100)
{
int num=rnd.Next(1,101);
if(!myList.Contains(num))
myList.Add(num);
}
for(int i=0;i<100;i++)
intArr[i]=(int)myList[i];
第4个回答  2010-11-09
利用Hashtable。
Hashtable hashtable = new Hashtable();
Random rm = new Random();
int RmNum = 100;
for (int i = 0; hashtable.Count < RmNum; i++)
{
int nValue = rm.Next(100);
if (!hashtable.ContainsValue(nValue) && nValue != 0)//去重
{
hashtable.Add(nValue, nValue);
Console.WriteLine(nValue.ToString());
}
}本回答被网友采纳
相似回答