栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java--- Random类 和 Math.random()方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java--- Random类 和 Math.random()方法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录
  • Random类
    • 语法:
    • 案例:
  • 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)
    • 案例2: 我们需要取2~22之间的偶数
        • (int)2+(int)(Math.random()*(22-2));
    • 案例 3:
        • 需求:
        • **Math.max(Math.random(), Math.random());**
  • 随机生成字符
        • 随机生成a到d 之间的数 . ---------a和d都包括


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;
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/439557.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号