Random rd=new Random(); rd.Next(0,10);这个样子应该可以取到0吧。,, 是不是你运气不好?
Random rd=new Random(); rd.Next(0,0); 看看取到取不到...嘿嘿
Random rd=new Random(); rd.Next(0,11); 理论上是可以取到0的,只是机率比较小
这恐怕就是你代码的问题了。。 你该不会每次在new一下再取吧?
返回N个随机数字 private static bool GetArrayBool(int[] RandomArray, int number) { for (int i = 0; i < RandomArray.Length; i++) { if (RandomArray[i] == number) { return false; } } return true; } public static int[] GetRandom(int a, int b, int c) { Random RandomNumber = new Random(unchecked((int)DateTime.Now.Ticks)); int[] TempNumber = new int[c]; for (int i = 0; i < c; i++) { int Num = Num = RandomNumber.Next(a, b); while (GetArrayBool(TempNumber,Num)==false) { Num = RandomNumber.Next(a, b); } TempNumber[i] = Num; } return TempNumber; }
把这句放在方法外。。 Random RandomNumber = new Random(unchecked((int)DateTime.Now.Ticks));
哦,看出问题了, int[] TempNumber = new int[c]; 数组里还没有赋值的,初始值是0,因此你最后的输出结果是取不到0的。。
你改成: private static bool GetArrayBool(int[] RandomArray, int number, int count) { for (int i = 0; i < count; i++) { if (RandomArray[i] == number) { return false; } } return true; } private static Random RandomNumber = new Random(unchecked((int)DateTime.Now.Ticks)); public static int[] GetRandom(int a, int b, int c) { // Random RandomNumber = new Random(unchecked((int)DateTime.Now.Ticks)); int[] TempNumber = new int[c]; for (int i = 0; i < c; i++) { int Num = RandomNumber.Next(a, b); while (GetArrayBool(TempNumber,Num,i)==false) { Num = RandomNumber.Next(a, b); } TempNumber[i] = Num; } return TempNumber; }
rd.Next(0,10);这个样子应该可以取到0吧。,,
是不是你运气不好?
rd.Next(0,0);
看看取到取不到...嘿嘿
rd.Next(0,11);
理论上是可以取到0的,只是机率比较小
这恐怕就是你代码的问题了。。
你该不会每次在new一下再取吧?
private static bool GetArrayBool(int[] RandomArray, int number)
{
for (int i = 0; i < RandomArray.Length; i++)
{
if (RandomArray[i] == number)
{
return false;
}
}
return true;
}
public static int[] GetRandom(int a, int b, int c)
{
Random RandomNumber = new Random(unchecked((int)DateTime.Now.Ticks));
int[] TempNumber = new int[c];
for (int i = 0; i < c; i++)
{
int Num = Num = RandomNumber.Next(a, b);
while (GetArrayBool(TempNumber,Num)==false)
{
Num = RandomNumber.Next(a, b);
} TempNumber[i] = Num;
} return TempNumber;
}
Random RandomNumber = new Random(unchecked((int)DateTime.Now.Ticks));
数组里还没有赋值的,初始值是0,因此你最后的输出结果是取不到0的。。
private static bool GetArrayBool(int[] RandomArray, int number, int count)
{
for (int i = 0; i < count; i++)
{
if (RandomArray[i] == number)
{
return false;
}
}
return true;
} private static Random RandomNumber = new Random(unchecked((int)DateTime.Now.Ticks));
public static int[] GetRandom(int a, int b, int c)
{
// Random RandomNumber = new Random(unchecked((int)DateTime.Now.Ticks));
int[] TempNumber = new int[c];
for (int i = 0; i < c; i++)
{
int Num = RandomNumber.Next(a, b);
while (GetArrayBool(TempNumber,Num,i)==false)
{
Num = RandomNumber.Next(a, b);
} TempNumber[i] = Num;
} return TempNumber;
}
easy.