日期:2014-05-20  浏览次数:20723 次

求助,关于用random生成随机数字的问题
我想用random随机生成10个0.0-1.0的数字,每次重新生成的这10个数都是固定的,我尝试用添加种子的方法生成
for (int i = 0; i < 10; i++) {
Random rdm = new Random(1);
float num= rdm.nextFloat();
System.out.println(num);
}
结果这10个数字是一样的`我知道我的结果是错的,求正确的解决思路,谢谢

------解决方案--------------------
Random rdm = new Random(1); 放在循环前面去
------解决方案--------------------
搂住 java里的random设置相同的seed 获得的是同一个随机数队列,你每次都是从相同的随机数队列里面拿出来第一个数 当然相同了 ,random的默认构造函数random(),才用的种子是当时系统的毫秒值,System.currentTimeMillis(), 所以每次生成的数会不一样,前提是你每次都要new random()使其产生新的随机数队列,你上面的代码只要把seed去掉即可.
------解决方案--------------------
Random rdm = new Random(1);
里面那个1是作为种子,然后生成随机数时是根据这个种子来执行一种产生随机数算法,因为你for循环里每次都是使用1作为种子,所以每次产生的随机数都一样。
Random rdm = new Random();
是使用系统当前时间作为种子,因为每次执行时时间不同,种子不同产生的随机数也就不一样了。