Java--- Random类 和 Math.random()方法
Posted 高高for 循环
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java--- Random类 和 Math.random()方法相关的知识,希望对你有一定的参考价值。
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
Random类
Java.util.Random类,可以通过实例化一个Random对象创建一个随机数生成器。
语法:
Random ran=new Random();
Random ran=new Random(seedValue);
Random类中还提供各种类型随机数的方法:
nextInt():返回一个随机整数(int)
nextInt(int n):返回大于等于0、小于n的随机整数(int)
nextLong():返回一个随机长整型值(long)
nextBoolean():返回一个随机布尔型值(boolean)
nextFloat():返回一个随机浮点型值(float)
nextDouble():返回一个随机双精度型值(double)
nextGaussian():概率密度为高斯分布的双精度值(double)
案例:
import java.util.Random;
public class randomTest {
public static void main(String args[])
{
Random random=new Random();//以系统当前时间作为随机数生成的种子
System.out.println(random.nextInt(10));//返回一个大于0且小于10的整数
System.out.println(random.nextFloat()); //返回一个随机浮点型
System.out.println(random.nextBoolean()); //返回一个随机布尔型值
System.out.println(random.nextDouble()); //返回一个随机双精度型
System.out.println(random.nextLong()); //返回一个随机长整形
}
}
Math.random()方法
介绍:
Math.random()是令系统随机选取大于等于 0.0 且小于 1.0的伪随机 double值
公式总结:
产生一个[0,1)之间的随机数。
Math.random():
返回大于等于0小于n之间的随机数
int num=(int)(Math.random()*n);
返回指定范围的随机数(m-n之间)的公式:
Math.random()*(n-m)+m; //包括m ,不包括n
或者
Math.random()*(n+1-m)+m //包括m ,也包括n
案例 1:
需求: 返回0-5之前的随机数
(int) (Math.random() * 6)
public class Test2 {
public static void main(String[] args) {
int testTimes = 10000000;
int K = 6;
int[] counts = new int[6];
for (int i = 0; i < testTimes; i++) {
int ans = (int) (Math.random() * K); // [0,K-1]
counts[ans]++;
}
for (int i = 0; i < K; i++) {
System.out.println(i + "这个数,出现了 " + counts[i] + " 次");
}
}
}
案例2: 我们需要取2~22之间的偶数
(int)2+(int)(Math.random()*(22-2));
public class Test03 {
public static int GetevenNum(double num1,double num2){
int s=(int)num1+(int)(Math.random()*(num2-num1));
if(s%2==0){
return s;
} else{
return s+1;
}
}
public static void main(String[] args){
System.out.println("任意一个num1_num2之间的偶数:"+GetevenNum(2,22));
}
}
案例 3:
需求:
任意的x,x属于[0,1),[0,x)范围上的数出现概率由原来的x调整成x平方
Math.max(Math.random(), Math.random());
随机生成字符
例如:
1.随机生成a~z之间的字符
(char)(‘a’+Math.random()*(‘z’-‘a’+1));
2.随机生成cha1~cha2的字符
(char)(cha1+Math.random()*(cha2-cha1+1));
public static void main(String[] args){
char ch1 = (char) ('a' + Math.random() * ('z' - 'a' + 1));
System.out.println(ch1);
}
随机生成a到d 之间的数 . ---------a和d都包括
public static void main(String[] args){
System.out.println(Test03.getRandomChar('a','d'));//a和d都包括
}
public static char getRandomChar(char ch1,char ch2) {
char ch=(char) (ch1+ Math.random()*(ch2-ch1+1));
return ch;
}
以上是关于Java--- Random类 和 Math.random()方法的主要内容,如果未能解决你的问题,请参考以下文章