黑马程序员技术交流社区
标题:
随机函数问题
[打印本页]
作者:
王松朝
时间:
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对象。
下面给你一共代码测试
public class RandomTest
{
public static void main(String[] args)
{
float i= (float) Math.random();//random()会自动产生一个0到1之间的浮点型随机数 System.out.println(i);
i=(int) (Math.random()*1000);//产生0-1000的双精度随机数
System.out.println(i);
int b=(int)(Math.random()*1000);//产生0-1000的整数随机数
System.out.println(b);
}
}
复制代码
结果:
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