VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > C#编程 >
  • C#教程之C#在循环中使用Random时生成的随机数相同的解决办法

本站最新发布   C#从入门到精通
试听地址  
https://www.xin3721.com/eschool/CSharpxin3721/

场景

在循环中使用

Random y = new Random();

 

生成随机数时每次循环生成的数是一样的。

复制代码
for (int i = 1; i < 20000;i++ )
            {
                Random y = new Random();
                PointPairList list1 = new PointPairList();

                for (int j = 0; j < 50; j++)
                {
                    double x = j;
                    double y1 = y.NextDouble() * 1000;
                    list1.Add(x, y1); //添加一组数据

                }

                LineItem myCurve = myPane.AddCurve("曲线"+i, list1, Color.Red, SymbolType.None);
               
            }
复制代码

 

想要每次循环生成不一样的随机数。

实现

可以查看Random的定义

 

 

除了使用默认的Random()构造方法,还可以使用指定的种子值初始化 System.Random 类的新实例。

复制代码
for (int i = 1; i < 20000;i++ )
            {
                Random y = new Random(Guid.NewGuid().GetHashCode());
                PointPairList list1 = new PointPairList();

                for (int j = 0; j < 50; j++)
                {
                    double x = j;
                    double y1 = y.NextDouble() * 1000;
                    list1.Add(x, y1); //添加一组数据

                }

                LineItem myCurve = myPane.AddCurve("曲线"+i, list1, Color.Red, SymbolType.None);
               
            }
复制代码

 

博客园: https://www.cnblogs.com/badaoliumangqizhi/ 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。
 
分类: C#
好文要顶 关注我 收藏该文  
霸道流氓
关注 - 1
粉丝 - 30
 
 
+加关注
0
0
 
 
 
« 上一篇: Winform中自定义ZedGraph右键复制成功后的提示
» 下一篇: 解决pip使用异常No module named 'pip'
posted @ 2019-11-12 11:28  霸道流氓  阅读(491)  评论(2)  编辑  收藏
 

 
  
#1楼 2019-11-12 14:15 花落心语
你就不能把 Random y = new Random(); 放到for循环外面去?
每次都new一个干嘛

无参构造函数是会默认用当前时间作为种子的
内部循环耗时太短了
导致外部循环的时间种子一致了
支持(2) 反对(0)
  
#2楼 [楼主2019-11-12 14:18 霸道流氓
@ 花落心语
大佬
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Random y = new Random();
 for (int i = 1; i < 20;i++ )
 {
     //Random y = new Random(Guid.NewGuid().GetHashCode());
     PointPairList list1 = new PointPairList();
 
     for (int j = 0; j < 50; j++)
     {
         double x = j;
         double y1 = y.NextDouble() * 1000;
         list1.Add(x, y1); //添加一组数据
 
     }
 
     LineItem myCurve = myPane.AddCurve("曲线"+i, list1, Color.Red, SymbolType.None);
    
 }
 

相关教程