日期:2014-05-17  浏览次数:20914 次

问一个关于Random()的用法
我定义了三个Random():
Random rd1 = new Random();
Random rd2 = new Random();
Random rd3 = new Random();

int t1 = rd1.Next(0,9);
int t2 = rd2.Next(0,9);
int t3 = rd3.Next(0,9);

我想得到三个随机数然后组成一个随机数,但是!!!!!!但是每次t1、t2、t3的值都是相同的,也就是说在生成随机数的时候rd1、rd2、rd3生成的都是一样的,比如说rd1生成了一个随机数为:5   那么rd2、rd3都是5!!!于是成了:(5,5,5)(4,4,4,)(3,3,3,)....怎么办????
注意:我不想要说你可以t2 = rd1.Next(0,9)*i+j这样子的虽然不一样但是不是完全随机的了,是有联系的了!!
------最佳解决方案--------------------
Random rd1 = new Random();

int t1 = rd1.Next(0,9);
int t2 = rd1.Next(0,9);
int t3 = rd1.Next(0,9);


------其他解决方案--------------------
Random rd1 = new Random();

int t1 = rd1.Next(0,9);
int t2 = rd1.Next(0,9);
int t3 = rd1.Next(0,9);
这样就可以了,每次new一个,他们的随机种子都是一样的。
------其他解决方案--------------------
感谢,感谢,谢谢了~!
------其他解决方案--------------------
一个Random 可以生成多个随机数
------其他解决方案--------------------
  Random rd1 = new Random(1);
            Random rd2 = new Random(6);
            Random rd3 = new Random(8);
------其他解决方案--------------------
你只需要定义一个Random,然后调用它的next就可以,只要Random你传递的参数相同,不管你定义多少个,他们产生的随机数的顺序都是一样的,只是他们本身内部的值是不同的而已,比如每个相同参数的Random生成的随机数列表顺序都是一致的
一 二
1  1
2  2
3  3
4  4
5  5
------其他解决方案--------------------
程序中的随机都是伪随机,你用的默认的构造函数的random是用当前时间作为种子生成的一个随机数。
你可以在每个random实例化后让线程sleep一下,或者用前者生成出来的随机数作为后者的种子生成新的随机数,或者使用某些算法来生成一个随机数,比如rngcryptoserviceprovider