今天写了段c#代码遇到一个想不通的问题
我想随机产生几个(xyz)坐标到数据库里运行以后发现产生数据有重复我就设断点调试一下结果发现只要是逐条运行结果完全正确但是逐过程或者取消断点就会有重复我设置产生10条数据...
我想随机产生几个(x y z)坐标到数据库里 运行以后发现产生数据有重复 我就设断点调试一下 结果发现只要是逐条运行 结果完全正确 但是逐过程 或者取消断点 就会有重复 我设置产生10条数据 有时候是 2到10条是重复的 有时候是 3-6 7-10是重复的 到现在没发现是哪的问题
展开
展开全部
楼主你好:
C#中的Random .Next方法是有这个问题的,如果你不加断点,循环产生随机数时,Next的反应时间很慢,但是你的循环很快,这就造成你的循环所产生的随机数都会是一样的,即有重复,
楼上说的我试了,仍然不行,这个可以使用下面代码进行解决:
List<int> li = new List<int>(); for (int i = 0; i < 10; i++)
{
Random ra = new Random(unchecked((int)DateTime.Now.Ticks));
li.Add( ra.Next(100, 999));
Thread.Sleep(1);
}
希望对你有帮助,都是我以前遇到过的问题,
望采纳,谢谢。
C#中的Random .Next方法是有这个问题的,如果你不加断点,循环产生随机数时,Next的反应时间很慢,但是你的循环很快,这就造成你的循环所产生的随机数都会是一样的,即有重复,
楼上说的我试了,仍然不行,这个可以使用下面代码进行解决:
List<int> li = new List<int>(); for (int i = 0; i < 10; i++)
{
Random ra = new Random(unchecked((int)DateTime.Now.Ticks));
li.Add( ra.Next(100, 999));
Thread.Sleep(1);
}
希望对你有帮助,都是我以前遇到过的问题,
望采纳,谢谢。
展开全部
可以给Random一个系统时间做为参数,以此产生随机数,就不会重复了
Random ra=new Random(unchecked((int)DateTime.Now.Ticks));
ra.Next(100,999);
Random ra=new Random(unchecked((int)DateTime.Now.Ticks));
ra.Next(100,999);
展开全部
你的new Random对象做成static类型,放在函数之外就行了。
展开全部
话说,你的这东西是不是多线程生成的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询