Java程序设计入门教程--随机类Random

随机数的类

        在程序设计中,经常都需要产生一些随机数,比如模拟随机抽奖、抽样等。

         Random类在java.util包中,是专门用于提供生成一个随机数的类,随机数的生成相关方法都在该内中。比如Random类的nextInt方法需要一int型值作为参数,并返回0到参数值但不包括参数值本身的一随机值。

模拟投掷骰子

         比如模拟扔有六个面的骰子:

face = 1 + randomNumbers.nextInt( 6 );

        参数6称为比例因子,代表着 nextInt方法将产生 (0–5)中的一个值,这就是所谓的缩放值范围,但六个面的骰子是数字1–6在每一面上 , 而不是 0–5,我们可以通过增加1来改变产生数的范围,这个1称为移动值,可以将产生的随机数移动到特定的范围。

         案例:模拟扔六个面的骰子20次的程序的范例程序。

 

package test;
import java.util.Random;

public class JavaDemo {
	public static void main(String[] args) {
		Random ran1 = new Random();
		int face;
		for(int i=0; i<20; i++)
		{
			face = 1 + ran1.nextInt(6);
			System.out.print(face+" ");
		}
	}
}

 

 

伪随机

        Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。

       相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。

Random()的两种构造方法

n Random() :创建一个新的随机数对象。
n Random(long seed) :使用单个 long 种子创建一个新的随机数对象。

        

多个随机数对象时的范例程序。  

范例程序结论

       以上程序中,对象random1random2均是通过指定种子数为100构造的,而这两个对象在相同次数类生成的随机数是完全一样的。

       所以为了避免出现这种情况,无论程序中需要多少个随机数,都只使用一个Random对象。


均匀分布的随机数

      Random类中的方法比较简单,每个方法的功能也很容易理解,Random类中各方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的几率是均等的。

 例如:
public boolean nextBoolean()
该方法的作用是生成一个随机的boolean值,生成true和false的值几率相等,也就是都是50%的几率。
public double nextDouble()
该方法的作用是生成一个随机的double值,数值介于[0,1.0)之间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信知阁

您的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值