关于Random产生随机数的问题,请高手指点
请问一下为什么Random的对象调用nextdouble()方法得到值一样如:
main()
{
int a,b;
Random rnd1=new Random();
a=(int)(rnd1.nextdouble()*10);
Random rnd2=new Random();
b=(int)(rnd1.nextdouble()*10);
Console.WriteLine("a="+a+",b="+b);
}
a和b的值总是一样的
怎么样才能让a和b不一样呢 --------------------编程问答--------------------
main()--------------------编程问答--------------------
{
int a,b;
Random rnd1=new Random();
a=(int)(rnd1.nextdouble()*10);
b=(int)(rnd1.nextdouble()*10);
Console.WriteLine("a="+a+",b="+b);
}
// 不要每次都初始化,因为默认是以计算机时钟为随机数种子的。--------------------编程问答--------------------
// 而你的计算机太快了,两次初始化会取到同样的种子,造成产生的随机数一样。
static void Main()
{
Random rnd1 = new Random(); // 只需初始化一次
int a = (int)(rnd1.NextDouble()*10);
int b = (int)(rnd1.NextDouble()*10);
Console.WriteLine("a = {0}, b = {1}", a, b);
}
Random.Next() // 返回非负随机整数(Int32)。--------------------编程问答-------------------- 谢谢
Random.Next(int maxValue) // 返回一个小于所指定最大值的非负随机整数。
Random.Next(int minValue, int maxValue) // 返回一个指定范围内的随机整数(minValue≤返回值<maxValue)。
再请教一下哦
main()
{
int a,b;
Random rnd1=new Random();
a=(int)(rnd1.nextdouble()*10);
Random rnd2=new Random();
b=(int)(rnd2.nextdouble()*10);
Console.WriteLine("a="+a+",b="+b);
}
a和b的结果也是完全一样的
另外请教楼上的高手为什么只初始化一次就可以了呀 --------------------编程问答-------------------- 赞成楼上的,用一个Random对象来做 --------------------编程问答--------------------
一个对象依次取两次随机数,取到相同的情况当然少了 --------------------编程问答-------------------- 下次以上次的结果为种子.所以一次足以. --------------------编程问答--------------------
我在2楼已经回答你为什么结果也是完全一样的了:
--------------------编程问答-------------------- main()
{
int a,b;
Random rnd1=new Random();
a=(int)(rnd1.nextdouble()*10);
Random rnd2=new Random();
b=(int)(rnd2.nextdouble()*10);
Console.WriteLine("a="+a+",b="+b);
}
--------------------编程问答-------------------- 非常感谢
谢谢了各位 --------------------编程问答-------------------- 非常感谢
补充:.NET技术 , C#