首页 新闻 会员 周边

随机数相同问题

0
悬赏园豆:10 [已解决问题] 解决于 2012-08-30 13:17

程序里的一段代码产生的随即数总是相同,不知道是什么原因,我是一条条数据进行处理的,但产生的数据却相同不知道为什么?请高手指教

 

  Random rd = new Random(System.DateTime.Now.Millisecond);
                        dz = Math.Abs(dz);
                        if (dz > 12)
                        {
                            dz = rd.Next(0, 5) + rd.NextDouble();
                            dz = Math.Round(dz, 1);
                        }
                        if (d2 > 12)
                        {
                            dx = rd.Next(0, 5) + rd.NextDouble();
                            dy = rd.Next(0, 5) + rd.NextDouble();
                            d2 = Math.Round(Math.Sqrt(dx * dx + dy * dy), 1);
                            dy = Math.Round(dy, 1);
                            dx = Math.Round(dx, 1);
                        }

问题补充:

每次处理50条数据,四个一组数据,每四条都相同

静秋的主页 静秋 | 初学一级 | 园豆:176
提问于:2012-08-30 09:59
< >
分享
最佳答案
0

你所说的随机数相同是指调试程序发现rd.Next(0, 5)得到的值相同吗?

我觉得不会

田林九村 | 老鸟四级 |园豆:2367 | 2012-08-30 10:05

嗯是啊,这个应该不会啊 ,可是今天见鬼了

静秋 | 园豆:176 (初学一级) | 2012-08-30 13:09
其他回答(5)
0

public int numduos()
    {
        Random random = new Random();
        int[] number ={ 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 };
        int num = random.Next(10);
        return number[num];
        //Comsole.WriteLine("这个数是:{0}", number[num]);
    }

    public string RandomNum()
    {
        string strchar = "1,2,3,42,34,23,452";
        Random r = new Random(Guid.NewGuid().GetHashCode());
        string[] arr = strchar.Split(',');

        foreach (string s in arr)
        {
            int index = r.Next(0, arr.Length);
            string strTemp = arr[index];
            arr[index] = arr[0];
            arr[0] = strTemp;
        }

        string aa = "";
        foreach (string s in arr)
        {
            aa += s + ",";
        }

        string[] bb = aa.Split(',');
        string cc = "";
        for (int i = 0; i < 5; i++)
        {
            cc += bb[i] + ",";
        }
        return cc.Trim().Substring(0, cc.Trim().Length - 1).Replace(",", ",");

    }

 

试下这个,我测试了正常

收获园豆:10
jason2013 | 园豆:1998 (小虾三级) | 2012-08-30 10:10

嗯 十分感谢

支持(0) 反对(0) 静秋 | 园豆:176 (初学一级) | 2012-08-30 13:11

问题解决,可能就是每次都进行了声明导致的

支持(0) 反对(0) 静秋 | 园豆:176 (初学一级) | 2012-08-30 13:20
0

new Random(DateTime.Now.Ticks)

56180825 | 园豆:1756 (小虾三级) | 2012-08-30 10:11

问题解决,可能就是这个问题,按照这个思路解决了

支持(0) 反对(0) 静秋 | 园豆:176 (初学一级) | 2012-08-30 13:20
0

将这个Random rd声明到外面去

wolfram | 园豆:109 (初学一级) | 2012-08-30 10:30

嗯 十分感谢

支持(0) 反对(0) 静秋 | 园豆:176 (初学一级) | 2012-08-30 13:11
0

random rd 声名的位置有问题,你是不是每次用随机数的时候都Random rd = new Random(System.DateTime.Now.Millisecond);。那么对于你下面的程序来说rd种子是一样的。random是伪随机,种子一样,下面的程序就一样了。你考虑一下我的意见

南潇湘 | 园豆:160 (初学一级) | 2012-08-30 10:47

嗯 十分感谢

支持(0) 反对(0) 静秋 | 园豆:176 (初学一级) | 2012-08-30 13:11
0

每次循环种子加1

或者用空的构造函数new Random();

慧☆星 | 园豆:5640 (大侠五级) | 2012-08-30 11:13

嗯 十分感谢

支持(0) 反对(0) 静秋 | 园豆:176 (初学一级) | 2012-08-30 13:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册