Random ran=new Random(seed);
int num=ran.Next(a,b);
seed是种子,它对下面int num=ran.Next(a,b)产生什么作用呢?
假设是
Random ran=new Random(20);
int num=ran.Next(0,9);
num值是什么呢?
谢谢,在线等。
...全文
12911打赏收藏
随机数产生的问题??请大侠帮忙解决
Random ran=new Random(seed); int num=ran.Next(a,b); seed是种子,它对下面int num=ran.Next(a,b)产生什么作用呢? 假设是 Random ran=new Random(20); int num=ran.Next(0,9); num值是什么呢? 谢谢,在线等。
Random ran=new Random(seed);
int num=ran.Next(a,b);
seed是种子,它对下面int num=ran.Next(a,b)产生什么作用呢?
随机数里面的种子,起到的作用是:如果使用同一个种子,那么生成的随机数序列是一样的,不变得
也就是说如果你第一次这样:
Random ran=new Random(20);
int num=ran.Next(a,b); 假如:生成的随机数是3,5,1,8,10.....
那么,当你第二次仍设置同样的种子:
Random ran=new Random(20);
int num=ran.Next(a,b);
那么:生成的随机数仍会是3,5,1,8,10.....
首先,seed 对int num=ran.Next(a,b)的num产生没有任何影响,其次,num 的产生是a到 b之间的整数.
没有找到具体的依据,但是可以用代码测试一下.
Random r1 = new Random(100);//如果seed相同的话,生成的随即序列也就相同.即r1与r3的随即序列相同,不过这只是指随即序列相同,跟随即数没什么关系,更加具体的你可以在baidu search一下"随即数 生成算法".
Random r2 = new Random();
Random r3 = new Random(100);
for (int i = 0; i < 100; i++)
{
int i1 = r1.Next();//产生0到最大整数之间的随即整数;
int i2 = r1.Next(20);//产生0到20之间的随即数;
int i3 = r1.Next(10, 20);//产生10到20之间的随即数;
int i4 = r2.Next();//产生0到最大整数之间的随即整数;
int i5 = r2.Next(20);//产生0到20之间的随即数;
int i6 = r2.Next(10, 20);//产生10到20之间的随即数;
int i7 = r3.Next();//产生0到最大整数之间的随即整数;
int i8 = r3.Next(20);//产生0到20之间的随即数;
int i9 = r3.Next(10, 20);//产生10到20之间的随即数;
Console.WriteLine(i1);
Console.WriteLine(i2);
Console.WriteLine(i3);
Console.WriteLine(i4);
Console.WriteLine(i5);
Console.WriteLine(i6);
Console.WriteLine(i7);
Console.WriteLine(i8);
Console.WriteLine(i9);
}
这个只能产生一个数据 通过改变seed,获得不同的值;
for (int i = 0; i < 20; i++)
{
Random rm = new Random(i);//每个i可以产生一个相对固定的数
Console.Write(rm.Next(0,20).ToString() + "\n");
}