黑马程序员技术交流社区

标题: 随机函数问题 [打印本页]

作者: 王松朝    时间: 2011-7-19 22:00
标题: 随机函数问题
new Random(10);
使用单个lang种子创建一个随机数生成器
这是API文档的解释,不懂,谁能给解释下?
作者: 匿名    时间: 2011-7-20 01:15
new Random(10);
说明这里用10作为种子生成随机数生成器。
new Random();
这里是使用默认的当前时间作为种子生成随机数生成器。
举个例子:
new Random().nextInt();你每次运行都会有一个不同的随机数。
new Random(10).nextInt();你每次运行结果都是一样的。
使用种子,主要看你要生成什么样子的随机数生成器。这个可以自己定,也可以使用默认的。主要是认识两者的本质,根据具体的应用来定 !
作者: 匿名    时间: 2011-7-20 11:02
总结如下:

方法1
(数据类型)(最小值+Math.random()*(最大值-最小值+1))
例:
(int)(1+Math.random()*(10-1+1))
从1到10的int型随数
方法2
获得随机数
for (int i=0;i<30;i++)
{System.out.println((int)(1+Math.random()*10));}
(int)(1+Math.random()*10)
通过java.Math包的random方法得到1-10的int随机数
公式是:最小值---最大值(整数)的随机数
(类型)最小值+Math.random()*最大值
方法3
Random ra =new Random();
for (int i=0;i<30;i++)
{System.out.println(ra.nextInt(10)+1);}
通过java.util包中的Random类的nextInt方法来得到1-10的int随机数
作者: 李海涵    时间: 2011-7-20 11:14
random(); 可以产生出0-1之间的随即小数

们可以通过两种方式来获取随机数一种是java.lang.Math.Random()
另一种是创建java.util.Random对象。

下面给你一共代码测试
  1. public class RandomTest
  2. {
  3.    public static void main(String[] args)
  4.    {
  5.        float i= (float) Math.random();//random()会自动产生一个0到1之间的浮点型随机数       System.out.println(i);
  6.        i=(int) (Math.random()*1000);//产生0-1000的双精度随机数   
  7.        System.out.println(i);
  8.        int b=(int)(Math.random()*1000);//产生0-1000的整数随机数   
  9.        System.out.println(b);
  10.    }
  11. }
复制代码
结果:
0.31699228
740.0
417

你测试的结果肯定跟我不一样,因为是随机数
[ 本帖最后由 lihaihan 于 2011-07-20  11:17 编辑 ]
作者: 匿名    时间: 2011-7-20 11:45
Random产生的是伪随机数或者说是一种复杂的方法计算得到的序列值,它每次运算都需要一个不同的种子值,种子值不同,得到的序列值也不同。
new Random(10);
这里用10作为种子生成随机数生成器每次运行肯定结果一样。
new Random();
同2楼说的是使用默认的当前时间作为种子生成随机数生成器,时间是变化的,得到的序列值也是不同的,所以每次运行的结果也就不同了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2