代码如下,但是当选号范围与个数相近的时候,判断相同的随机数的函数会出现错误,提示的错误是无限循环或者无限递归,为什么啊?当选号范围是30同时选号个数是29的时候,会出现错误。using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace _1._5
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }        int up,number=0;
        private void button1_Click(object sender, EventArgs e)
        {
            if (number != 0) label3.Text = "";
            up = Convert.ToInt32(this.numericUpDown1.Value);        //范围,最大值
            number = Convert.ToInt32(this.numericUpDown2.Value);    //随机数个数
            if (up <= number)
            {
                MessageBox.Show("选号范围必须大于选号个数!", "错误提示");
                return ;
            }
            int[] a=new int[up];
            a = getRandomNum(number, 0, up);                            //调用产生随机数
            for (int i = 0; i < number; i++)
            {
                label3.Text = label3.Text+" "+ a[i].ToString();
            }
        }        private void button2_Click(object sender, EventArgs e)
        {
            Close();
        }//以下程序代码来源于书上
        //产生随机数
        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; i++)
            {
               tmp = ra.Next(minValue, maxValue);    //产生随机数赋给tmp 
               arrNum[i] = getNum(arrNum, tmp, minValue, maxValue, ra);
            }
            return arrNum;
        }
            Random ra=new Random(unchecked((int)DateTime.Now.Ticks)); 
        //判断当前产生的随机数是否与之前的数有重复----递归算法
        public int getNum(int[] arrNum, int tmp, int minValue, int maxValue, Random ra)
        {
 
            for (int n = 0; n <=arrNum.Length -1; n++)
                if (arrNum[n] == tmp)
                {
                    tmp = ra.Next(minValue, maxValue);      /******在这里提示无限递归********/
                    getNum(arrNum, tmp, minValue, maxValue, ra);
                }
            return tmp;   //返回到getRandomNum()函数中
        }出现error