Java 随机数的生成及扩展

本文详细介绍了Java中生成随机数的两种常见方法:使用Math.random()生成[0,1)之间的double值,并通过类型转换得到指定范围内的整数随机数;以及通过Random类创建随机数生成器,获取包括boolean、byte、int、long、float和double在内的多种类型随机值。文章还提供了生成指定范围内随机数的具体代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

Java随机数常用的两种生成方式:

一、Math.random( );查看API可以得知:

static doublerandom()
          返回带正号的 double 值,该值大于等于 0.0 且小于 1.0

简单的来说就是通过Math.random()返回一个[0,1)之间的double值。由于double类数的精度很高,可以在一定程度下看做随机数,借助(int)来进行类型转换就可以得到整数随机数了,代码如下。

double random = Math.random();
//double类型
System.out.println("[0,1)区间内的随机数: "+random);

如果要int类型的值,强制类型转换为int就可以,int ran = (int) random; 但强转后,random的值肯定为0;这是因为[0,1)区间内向下取整;

下面从需求出发:生成一个1~50的随机数;

//生成一个1~50的随机数;
int random = (int)(Math.random()*50+1);
System.out.println(random);

上述代码:Math.random( )*50后,值的范围在[0,50)内;进行加一操作后为[1,51);转化为int类型则为[1,50];

扩展:生成指定范围内的随机数:

//生成指定范围内的随机数: [75,100];
int max = 100;
int min = 75;
int random = (int)(Math.random()*(max-min+1)+min);
System.out.println(random);

二、通过New Random( )来生成随机数

同样的操作,先查看API:可看构造方法等方法摘要;

构造方法摘要
Random()
          创建一个新的随机数生成器。
Random(long seed)
          使用单个 long 种子创建一个新的随机数生成器。

1、创建Random对象;

Random random = new Random( );

Random random = new Random(20);

2、 通过Random对象获取随机数。Random支持的随机值类型包括:boolean, byte, int, long, float, double。比如,获取[0, 100)之间的int整数。方法如下:

int num = random.nextInt(100);

直接从需求入手:通过Random类求3~8的数;

public class RandomTest {

	public static void main(String[] args) {
		int ran = getRandom(3,8);
		System.out.println(ran);
	}

	private static int getRandom(int start, int end) {
		Random random = new Random();
		int ran = random.nextInt(end-start+1)+start;
		return ran;
	}
}

最后:对上述Randon(seed)有参构造方法解释:在API中可以看到调用 new Random(seed) 等效于:

 Random rnd = new Random();
 rnd.setSeed(seed);

注意:Random 的一个特点是:相同种子数的Random对象,对应相同次数生成的随机数字是完全相同的;读者可以自行测试一下,传入了种子对象后,随机数的后续运行结果都是一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值