如题:
                float basevalue = float.Parse(txtboxBaseValue.Text);
                float offset = float.Parse(txtboxOffset.Text);
                Random ra = new Random();
                float random = (float)(ra.NextDouble() * offset * 2 + (basevalue - offset));这是生成随机数的代码,现在有这个么一个问题,当我生成很多随机数的时候,会重复很多一样的随机数,请问有没有什么好的解决办法???

解决方案 »

  1.   

    这个就跟福利彩票不能重复一样,吧已经生成的放在数组里,判断一下就可以了。但是要注意float是近似值,所以不好用等于来判断
    给你一个Int的例子,是我用来生成彩票号码的,呵呵            //代码片段
                int[] redNos = new int[6];
                
                for (int i = 0; i < 6; i++)
                {
                    int no = SelecetNo(redNos);
                    redNos[i] = no;
                }        //生成整数并防止重复的函数
            private int SelecetNo(int[] existNos)
            {
                Random rm = new Random();
                int no = rm.Next(1, 34);            bool flag = false;            for(int i=0;i<existNos.Length;i++)
                {
                    if (no == existNos[i])
                    {
                        flag = true;
                        break;
                    }
                }            if (flag)
                {
                    no = SelecetNo(existNos);
                }            return no;
            }
      

  2.   

    如果是数据库的话,那先检索一下数据库里村不存在现在即将添加的数据就OK了,一个Select Count语句就可以