Java Random类的使用

1.简单使用:

Random random=new Random();
int a=random.nextInt();
System.out.println(a);
-325078223
Process finished with exit code 0

产生int类型范围内 -2147483648~2147483647 的随机整数。

Random random=new Random();
int a=random.nextInt(10);
System.out.println(a);

产生0~9的随机整数。

2.产生任意范围的随机整数

Random random=new Random();
int a=random.nextInt(6)+5;
System.out.println(a);

产生任意范围的随机整数,此处为5~10.

3.产生任意范围的随机小数

Random random=new Random();
double a=random.nextDouble();
System.out.println(a);
0.11665258082938701
Process finished with exit code 0

产生(0,1)范围的随机小数.

Random random=new Random();
double a=random.nextDouble()*1.5+1;
System.out.println(a);
2.445836482596139

Process finished with exit code 0

产生任意范围的随机小数,此处为1~2.5,精确度为double默认的精确度.

 Random random=new Random();
 double a=random.nextDouble()*1.5+1;
 BigDecimal bg = new BigDecimal(a);
 double b = bg.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
 System.out.println(b);
1.9

Process finished with exit code 0

产生任意范围的随机小数,此处为1~2.5.精确度为小数点后一位。
关于double精确度的内容请参考 java double的精确度控制 还没写。。。不要点

4.seed 种子的使用

Random random1 = new Random(100);
System.out.println(random1.nextInt());
System.out.println(random1.nextFloat());
System.out.println(random1.nextBoolean());
Random random2 = new Random(100);
System.out.println(random2.nextInt());
System.out.println(random2.nextFloat());
System.out.println(random2.nextBoolean());
-1193959466
0.7346627
false

-1193959466
0.7346627
false

Process finished with exit code 0

相同种子输出的结果相同.

Random random1 = new Random(System.currentTimeMillis());
System.out.println(random1.nextInt());
System.out.println(random1.nextFloat());
System.out.println(random1.nextBoolean());
System.out.println();
Random random2 = new Random(System.currentTimeMillis());
System.out.println(random2.nextInt());
System.out.println(random2.nextFloat());
System.out.println(random2.nextBoolean());
-1674565819
0.2528978
false

-1664947096
0.5270924
true

Process finished with exit code 0

不同种子输出的结果不同.

### JavaRandom使用方法和示例 Java中的`Random`用于生成伪随机数。它位于`java.util`包中,提供了多种方法来生成不同型的随机数,包括整数、浮点数、布尔值等[^1]。 #### 1. 创建Random对象 在使用`Random`之前,需要先创建一个`Random`对象。可以通过无参构造函数或者带种子的构造函数创建: ```java // 使用无参构造函数 Random random = new Random(); // 使用带种子的构造函数(相同种子会生成相同的随机数序列) Random randomWithSeed = new Random(13); ``` #### 2. 常用方法及其示例 ##### (1) `nextInt()` 生成一个随机整数。如果没有参数,则返回一个任意范围的整数;如果传入一个正整数`n`,则返回一个介于`[0, n)`之间的整数[^1]。 ```java Random ran = new Random(); int val = ran.nextInt(); // 返回任意范围的整数 System.out.println("ran.nextInt(): " + val); int boundedVal = ran.nextInt(100); // 返回 [0, 100) 范围内的整数 System.out.println("ran.nextInt(100): " + boundedVal); ``` ##### (2) `nextDouble()` 生成一个介于`[0.0, 1.0)`之间的双精度浮点数[^3]。 ```java Random r = new Random(); double d = r.nextDouble(); // 返回 [0.0, 1.0) 范围内的双精度浮点数 System.out.println("r.nextDouble(): " + d); ``` ##### (3) `nextFloat()` 生成一个介于`[0.0, 1.0)`之间的单精度浮点数[^3]。 ```java float f = r.nextFloat(); // 返回 [0.0, 1.0) 范围内的单精度浮点数 System.out.println("r.nextFloat(): " + f); ``` ##### (4) `nextBoolean()` 生成一个随机布尔值,可能为`true`或`false`[^1]。 ```java boolean b = r.nextBoolean(); // 返回 true 或 false System.out.println("r.nextBoolean(): " + b); ``` ##### (5) `nextGaussian()` 生成一个符合标准正态分布(均值为0,标准差为1)的双精度浮点数。 ```java double gaussian = r.nextGaussian(); // 返回标准正态分布的随机数 System.out.println("r.nextGaussian(): " + gaussian); ``` ##### (6) `nextLong()` 生成一个随机长整型数值。 ```java long l = r.nextLong(); // 返回一个随机长整型数 System.out.println("r.nextLong(): " + l); ``` ##### (7) 生成指定范围内的随机数 通过组合`nextDouble()`或其他方法,可以生成指定范围内的随机数[^3]。 ```java // 生成 [1, 2.5) 区间的小数 double d3 = r.nextDouble() * 1.5 + 1; System.out.println("d3: " + d3); // 生成 [min, max) 区间的整数 int min = 10, max = 20; int randomInRange = r.nextInt(max - min) + min; System.out.println("randomInRange: " + randomInRange); ``` #### 3. 示例代码 以下是一个完整的示例程序,展示如何使用`Random`生成不同型和范围的随机数: ```java import java.util.Random; public class RandomExample { public static void main(String[] args) { Random r = new Random(); // 随机整数 System.out.println("Random int: " + r.nextInt()); System.out.println("Random int in [0, 100): " + r.nextInt(100)); // 随机浮点数 System.out.println("Random double in [0.0, 1.0): " + r.nextDouble()); System.out.println("Random float in [0.0, 1.0): " + r.nextFloat()); // 随机布尔值 System.out.println("Random boolean: " + r.nextBoolean()); // 标准正态分布随机数 System.out.println("Random Gaussian: " + r.nextGaussian()); // 指定范围内的随机数 int min = 10, max = 20; System.out.println("Random int in [" + min + ", " + max + "): " + (r.nextInt(max - min) + min)); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值