Random类的用法与详解

本文介绍了Java中的Random类,包括两个构造方法:无参构造和带种子的构造。讲解了nextInt(int bound)方法以及其他如nextBoolean(), nextDouble(), nextInt(), setSeed(long seed)等方法的用法,并通过实例演示如何生成指定区间内的随机数。" 7716506,1011673,Linux下十六进制转换中文方法,"['Linux', 'web服务', 'C']
部署运行你感兴趣的模型镜像

Random的两个构造方法

一、new Random();

Random类生成的随机数其实是伪随机,即就是有规律的随机数。
无参构造的话,以当前系统时间为种子,随机生成数字。

二、new Random(long seed);

有参构造的话,参数是一个种子数。给定一个种子数,其生成的随机数不管生成多少次,它的随机数都是一样的。

三、Random类中的nextInt(int bound)方法;

该方法的参数是随机数生成的区间(约束),例如nextInt(10),[0,10)。包括0不包括10。

四、Random类中的方法介绍

a、public boolean nextBoolean()

该方法的作用是生成一个随机的boolean值,生成true和false的值几率相等,也就是都是50%的几率。

b、public double nextDouble()

该方法的作用是生成一个随机的double值,数值介于[0,1.0)之间,这里中括号代表包含区间端点,小括号代表不包含区间端点,也就是0到1之间的随机小数,包含0而不包含1.0。

c、public int nextInt()

该方法的作用是生成一个随机的int值,该值介于int的区间,也就是-231到231-1之间。

如果需要生成指定区间的int值,则需要进行一定的数学变换,具体可以参看下面的使用示例中的代码。

d、public int nextInt(int n)

该方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n。

如果想生成指定区间的int值,也需要进行一定的数学变换,具体可以参看下面的使用示例中的代码。

e、public void setSeed(long seed)

该方法的作用是重新设置Random对象中的种子数。设置完种子数以后的Random对象和相同种子数使用new关键字创建出的Random对象相同。

举几个例子

1)、生成[1,2.5)区间的小数

double d3 = r.nextDouble() * 1.5 + 1;
生成[1,2.5)区间的随机小数,则只需要首先生成[0,1.5)区间的随机数字,然后将生成的随机数区间加1即可。

同理,生成任意非从0开始的小数区间[d1,d2)范围的随机数字(其中d1不等于0),则只需要首先生成[0,d2-d1)区间的随机数字,然后将生成的随机数字区间加上d1即可。

2)、随机数生成的区间是包括最大数,不包括最小数。(5,12 ]

     // min 5   max 12
    public int randint01(int min, int max)//生成随机数
    {
        //[0 , 1)  *  7  ---> [0 , 7)  +  5  +  1  -->  [6 , 13)
        int ran = (int) (min + Math.random() * (max - min) + 1);
        return ran;
    }

    // min 3   max 10
    public int randint02(int min, int max)//生成随机数
    {
        //[0 , 1)  *  7  ---> [0 , 7)  +  3  +  1  -->  [4 , 11)
        int ran = (int) (min + Math.random() * (max - min) + 1);
        return ran;
    }

3)、例:用Math类的random()方法产生一个字符,若该字符是一个大写英文字母,则输入 “Yes!”,否则输出“NO”。

random()方法产生的随机数在0.0和1.0之间,乘以128后,其值在0.0和128.0之间,将它转换为char类型后,用if来判断是否在’A’ 和’Z’之间。程序如下:

classIsUpper{
public static void main(String[] args){
charch;
ch=(char)(Math.random()*128);
if(ch>='A'&&ch<='Z')
System.out.println("Yes!");
else
System.out.println("No!");
	}
}

您可能感兴趣的与本文相关的镜像

Seed-Coder-8B-Base

Seed-Coder-8B-Base

文本生成
Seed-Coder

Seed-Coder是一个功能强大、透明、参数高效的 8B 级开源代码模型系列,包括基础变体、指导变体和推理变体,由字节团队开源

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值