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值是什么呢?
谢谢,在线等。
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值是什么呢?
谢谢,在线等。
参考下
int num=ran.Next(0,9);
产生20个不重复?
int num=ran.Next(0,9); 这个只能产生一个数据 通过改变seed,获得不同的值;
for (int i = 0; i < 20; i++)
{
Random rm = new Random(i);//每个i可以产生一个相对固定的数
Console.Write(rm.Next(0,20).ToString() + "\n");
}
Random ran=new Random(20);
int num=ran.Next(0,9); 无参构造配合有参Next()方法来用。Next(a)产生从0到a的随即数,Next(a,b)产生从a到b的随即数
有参构造配合无参Next()方法来用、产生从0到构造参数的值的随即数。
没有找到具体的依据,但是可以用代码测试一下.
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);
}希望对楼主有帮助.
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.....种子就起到这么一个作用,搂主可以尝试一下,实践第一嘛。如果要使每次生成的随机序列不一样,那么搂主可以用系统时间的Ticks作种子。
其实Random类的无参构造函数(也就是默认种子),构造的种子好像就是系统时间的Ticks关于第二个问题,搂主可以自己试验一下,就知道了