隨機生成不同的隨機數
阿新 • • 發佈:2019-01-03
1.函式
//生成隨機1-16的三個不同的隨機數
public int[] getRandomNum(int num, int minValue, int maxValue)
{
Random ra = new Random(unchecked((int)DateTime.Now.Ticks));
int[] arrNum = new int[num];
int tmp = 0;
for (int i = 0; i <= num - 1; i++)
{
tmp = ra.Next(minValue, maxValue); //隨機取數
arrNum[i] = getNum(arrNum, tmp, minValue, maxValue, ra); //取出值賦到陣列中
}
return arrNum;
}
public int getNum(int[] arrNum, int tmp, int minValue, int maxValue, Random ra)
{
int n = 0;
//while (n <= arrNum.Length - 1)
for (n = 0; n <= arrNum.Length - 1; n++)
{
if (arrNum[n] == tmp) //利用迴圈判斷是否有重複
{
tmp = ra.Next(minValue, maxValue); //重新隨機獲取。
getNum(arrNum, tmp, minValue, maxValue, ra);//遞迴:如果取出來的數字和已取得的數字有重複就重新隨機獲取。
}
}
return tmp;
}
2.呼叫
int[] arr = getRandomNum(3, 1, 16); //從1至16中取出3個互不相同的隨機數
//生成隨機1-16的三個不同的隨機數
public int[] getRandomNum(int num, int minValue, int maxValue)
{
Random ra = new Random(unchecked((int)DateTime.Now.Ticks));
int[] arrNum = new int[num];
int tmp = 0;
for (int i = 0; i <= num - 1; i++)
{
tmp = ra.Next(minValue, maxValue); //隨機取數
arrNum[i] = getNum(arrNum, tmp, minValue, maxValue, ra); //取出值賦到陣列中
}
return arrNum;
}
public int getNum(int[] arrNum, int tmp, int minValue, int maxValue, Random ra)
{
int n = 0;
//while (n <= arrNum.Length - 1)
for (n = 0; n <= arrNum.Length - 1; n++)
{
if (arrNum[n] == tmp) //利用迴圈判斷是否有重複
{
tmp = ra.Next(minValue, maxValue); //重新隨機獲取。
getNum(arrNum, tmp, minValue, maxValue, ra);//遞迴:如果取出來的數字和已取得的數字有重複就重新隨機獲取。
}
}
return tmp;
}
2.呼叫
int[] arr = getRandomNum(3, 1, 16); //從1至16中取出3個互不相同的隨機數