A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王松朝 金牌黑马   /  2011-7-19 22:00  /  3127 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

new Random(10);
使用单个lang种子创建一个随机数生成器
这是API文档的解释,不懂,谁能给解释下?

4 个回复

倒序浏览
黑马网友  发表于 2011-7-20 01:15:52
沙发
new Random(10);
说明这里用10作为种子生成随机数生成器。
new Random();
这里是使用默认的当前时间作为种子生成随机数生成器。
举个例子:
new Random().nextInt();你每次运行都会有一个不同的随机数。
new Random(10).nextInt();你每次运行结果都是一样的。
使用种子,主要看你要生成什么样子的随机数生成器。这个可以自己定,也可以使用默认的。主要是认识两者的本质,根据具体的应用来定 !

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 要是还详细点就更好了

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-20 11:02:13
藤椅
总结如下:

方法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随机数

评分

参与人数 1技术分 +1 收起 理由
admin + 1 看样子挺专业,先给分了

查看全部评分

回复 使用道具 举报
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 编辑 ]

评分

参与人数 1技术分 +1 收起 理由
admin + 1 给分先

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-20 11:45:11
报纸
Random产生的是伪随机数或者说是一种复杂的方法计算得到的序列值,它每次运算都需要一个不同的种子值,种子值不同,得到的序列值也不同。
new Random(10);
这里用10作为种子生成随机数生成器每次运行肯定结果一样。
new Random();
同2楼说的是使用默认的当前时间作为种子生成随机数生成器,时间是变化的,得到的序列值也是不同的,所以每次运行的结果也就不同了。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马