该文章Github地址:https://github.com/AntonyCheng/java-notes
在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.csdn.net/AntonyCheng/article/details/136555245),该模板集成了最常见的开发组件,同时基于修改配置文件实现组件的装载,除了这些,模板中还有非常丰富的整合示例,同时单体架构也非常适合SpringBoot框架入门,如果觉得有意义或者有帮助,欢迎Star & Issues & PR!
上一章:由浅到深认识Java语言(21):Math类
34.Random类
此类的实例用于生成伪随机数流,此类使用 48 位的种子形成随机数,即该类有机会生成 248 个结果;
所以世界上没有真正的随机数,因为在程序里的所有随机数都是由计算机通过算法而得到的;
Random构造器
构造方法摘要 |
---|
Random() 创建一个新的随机数生成器。 |
Random(long seed) 使用单个 long 种子创建一个新的随机数生成器,该种子就是伪随机的证明。 |
Random方法
返回类型 | 方法解释 |
---|---|
protected int | next(int bits) 生成下一个伪随机数,看到protected方法先不要用,因为需要继承。 |
boolean | nextBoolean() 返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 boolean 值。 |
void | nextBytes(byte[] bytes) 生成随机字节并将其置于用户提供的 byte 数组中。 |
double | nextDouble() 返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 double 值。 |
float | nextFloat() 返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 float 值。 |
double | nextGaussian() 返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的 double 值,其平均值是 0.0 ,标准差是 1.0 。 |
int | nextInt() 返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。 |
int | nextInt(int n) 返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值。 |
long | nextLong() 返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。 |
void | setSeed(long seed) 使用单个 long 种子设置此随机数生成器的种子。 |
常用方法
nextBoolean()
随机生成一个布尔值;
package top.sharehome.Bag;
import java.util.Random;
public class Method {
public static void main(String[] args) {
Random r = new Random();
boolean nextBoolean = r.nextBoolean();
System.out.println(nextBoolean);
}
}
打印效果如下:
nextBytes(byte[] bytes)
随机生成一个字节数组,并覆盖已有数组;
package top.sharehome.Bag;
import java.util.Arrays;
import java.util.Random;
public class Demo {
public static void main(String[] args) {
byte[] b = {0,0,0,0,0,0,0,0};
Random r = new Random();
r.nextBytes(b);
System.out.println(Arrays.toString(b));
}
}
打印效果如下:
nextDouble()
随机生成一个 0.0-1.0 的 double;
package top.sharehome.Bag;
import java.util.*;
public class Demo {
public static void main(String[] args) {
Random r = new Random();
double nextDouble = r.nextDouble();
System.out.println(nextDouble);
}
}
打印效果如下:
nextFloat()
随机生成一个 0.0-1.0 的 float;
package top.sharehome.Bag;
import java.util.*;
public class Demo {
public static void main(String[] args) {
Random r = new Random();
float nextFloat = r.nextFloat();
System.out.println(nextFloat);
}
}
打印效果如下:
nextGaussian()
随机生成一个 0.0-1.0(不包括) 的数,该数出现几率按高斯分布;
package top.sharehome.Bag;
import java.util.*;
public class Demo {
public static void main(String[] args) {
int count1 = 0;
int count2 = 0;
int count3 = 0;
Random r = new Random();
for (int j = 0; j < 5; j++) {
for (int i = 0; i < 1000000; i++) {
double nextGaussian = r.nextGaussian();
if (nextGaussian <= 0.33) {
count1++;
} else if (nextGaussian > 0.33 && nextGaussian < 0.66) {
count2++;
} else {
count3++;
}
}
System.out.println(count1 + " " + count2 + " " + count3);
count1 = 0;
count2 = 0;
count3 = 0;
}
}
}
打印效果如下:
nextInt()
随机生成一个整数;
package top.sharehome.Bag;
import java.util.*;
public class Demo {
public static void main(String[] args) {
Random r = new Random();
int nextInt = r.nextInt();
System.out.println(nextInt);
}
}
打印效果如下:
nextInt(int n)
随机生成一个 0-n 的整数;
package top.sharehome.Bag;
import java.util.*;
public class Demo {
public static void main(String[] args) {
Random r = new Random();
for (int i = 0; i < 11; i++) {
int nextInt = r.nextInt(10);
System.out.print(nextInt + " ");
}
}
}
打印效果如下:
nextLong()
随机生成一个 long;
package top.sharehome.Bag;
import java.util.*;
public class Demo {
public static void main(String[] args) {
Random r = new Random();
long nextLong = r.nextLong();
System.out.println(nextLong);
}
}
打印效果如下: