JAVA生成随机数有两个常用类,一个是java.util.Random,另一个是java.lang.Math,这两个类生成的随机数还是有一定区别的
一、 java.lang.Math类生成随机数
- Math.random()是一个静态方法,默认随机生成的是[0~1)的double类型小数:
double random = Math.random();
System.out.println("生成[0,1)的小数值:" + random);
- 生成随机整数[0~N)的整数(Math.random() * N)
double random = Math.random() * 5;
int value = (int) random;
System.out.println("生成[0, 5)的整数值" + value);
二、 java.util.Random类生成随机数(生成随机数方法更多,更常用)
- 生成[0, 1)的double类型小数
Random random = new Random();
double value = random.nextDouble();
System.out.println(value);
- 生成[0, N)的随机整数, random.nextInt(N)
Random random = new Random();
int value = random.nextInt(10);
System.out.println(value);
- 生成其它随机数
protected int next(int bits):生成下一个伪随机数。
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):返回一个伪随机数,它是取自此随机数生成器序列的、在(包括和指定值(不包括)之间均匀分布的int值。
long nextLong():返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。
void setSeed(long seed):使用单个 long 种子设置此随机数生成器的种子。
三、生成范围内随机数[min, max], random.nextInt(max) % (max - min + 1) + min
Random random = new Ramdom(System.currentTimeMillis());
int value = random.nextInt(20) % (20 - 5 + 1) + 5;
System.out.println(value);
Random random = new Ramdom(bounds); Random类参数解释:
random类生成随机数,其实不是正真意义上的随机数,他是根据内部制定的规则,随机生成的伪随机数,每次按相同方式去生成随机数,生成的值会是一样。当我们给了bounds这个种子数,它会根据给的种子数去生成随机数,因为我们给的种子数是系统时间,种子数一直在改变,生成的值肯定不同。
网友评论