private int IsBeRadNum(int Temp)
{//这里代码有问题需要修改
bool IsOK = false;
for (int i = 0; i < Number.Length; i++)
{
if (Number[i] == Temp)
{
IsOK = true;
break;
}
}
if (IsOK == true)
{
Temp = Rand.Next(Min, Max);
IsBeRadNum(Temp);
}
return Temp;
}
上面的代码随机产生一个在MIN 和MAX区间的数。但是在若干次随即之后总有相同的数字在里面。这个是为什么啊。
{//这里代码有问题需要修改
bool IsOK = false;
for (int i = 0; i < Number.Length; i++)
{
if (Number[i] == Temp)
{
IsOK = true;
break;
}
}
if (IsOK == true)
{
Temp = Rand.Next(Min, Max);
IsBeRadNum(Temp);
}
return Temp;
}
上面的代码随机产生一个在MIN 和MAX区间的数。但是在若干次随即之后总有相同的数字在里面。这个是为什么啊。
using System.Collections.Generic;class Test
{
const int Min = 20;
const int Max = 50;
const int N = Max - Min;
static List<int> Number = new List<int>(N);
static Random Rand = new Random();
static int GetRandNum()
{
int Temp = Rand.Next(Min, Max);
if (Number.Count >= N) return Temp;
if (Number.Contains(Temp)) return GetRandNum();
Number.Add(Temp);
return Temp;
}
static void Main()
{
Console.WriteLine(GetRandNum());
Console.WriteLine(GetRandNum());
Console.WriteLine(GetRandNum());
Console.WriteLine(GetRandNum());
Console.WriteLine(GetRandNum());
}
}
Temp = Rand.Next(Min, Max);
Temp = IsBeRadNum(Temp); //这个地方应该加上Temp =
//....
我在控制台里的代码如下: class Program
{
static void Main(string[] args)
{
//声明一个泛型集合
List<int> list = new List<int>();
for (int i = 0; i < 20; i++)//这里添加了20个数,你也可以添加多个
{
list.Add(i);
} //定义要生成的数组
int[] array = new int[5];//这里为5,大小可以自己定,不过不要超过list里面数的大小
for (int i = 0; i < array.Length; i++)
{
Random random=new Random();
//下面的代码保证了会不重复
array[i] = list[(int)(random.NextDouble() * list.Count)];
list.Remove(array[i]);
} //输出生成的不重复的随即数组
for (int i = 0; i < array.Length; i++)
{
Console.Write(array[i]+" ");
}
Console.ReadLine();
}
}