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

JAVA 随机数学习

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

JAVA 随机数学习

一、概念整理 1.1、随机性:

随机性:意味着无法预测,真正的随机性只存在于自然世界中;如:什么地方有闪电是随机的,有个地方正在酝酿风暴,可以相当确定那里会有闪电,但无法精确预测具体位置,所以不要站在树下。

1.2、真随机:

真随机:也有不同的含义,若想要「真正的真随机」目测只能靠量子力学了,一般的所谓真随机当然不是指这种,而是指统计意义上的随机,也就是具备不确定性,可以被安全的用于金融等领域。

1.3、伪随机:

伪随机:大部分程序和语言中的随机数,确实都只是伪随机。是由可确定的函数(常用线性同余),通过一个种子(常用时钟)产生的。这意味着:如果知道了种子,或者已经产生的随机数,都可能获得接下来随机数序列的信息(可预测性)。

1.4、随机种子:

随机种子:随机数就是就随机数种子中取出的数。种子就是个序号,这个序号交给一个数列管理器,通过这个序号,你从管理器中取出一个数列,这个数列就是你通过那个序号得到的随机数。

二、JAVA生成随机数的方案 2.1、java.lang.Math 类:Math类以静态方法的方式提供常用的数学方法。
    public static void main(String[] args) {
        //Math.random() 方法是一个可以产生[0.0,1.0]区间内的一个双精度浮点数的方法。
        System.out.println("产生[0.0,1.0]区间内的一个双精度浮点数:" + Math.random());
        System.out.println("产生一个100以内的整数:" + (int) (Math.random() * 100));
        System.out.println("产生一个1-50 之间的随机蒸数:" + (1 + (int) (Math.random() * 50)));
    }

执行结果:

产生[0.0,1.0]区间内的一个双精度浮点数:0.7383840156189087
产生一个100以内的整数:43
产生一个1-50 之间的随机蒸数:2

2.2、java.util.Random 类:随机数生成器
    public static void main(String[] args) {
        Random random = new Random();
        //random.nextInt(X) ==> 产生一个0到x-1的正数
        System.out.println("产生[0.0,1.0]区间内的一个双精度浮点数:" + random.nextDouble());
        System.out.println("产生一个100以内的整数:" + random.nextInt(101));
        System.out.println("产生一个1-50 之间的随机蒸数:" + (1 + random.nextInt(50)));
    }

执行结果:

产生[0.0,1.0]区间内的一个双精度浮点数:0.6842949962898257
产生一个100以内的整数:41
产生一个1-50 之间的随机蒸数:5
2.3、Math.random() 和 new Random() 对比

2.3.1、经过2.1和2.2中代码实例,我们可以看出: Math 和 Random 都可以实现我们一般随机数的功能;

2.3.2、经过底层代码阅读,我们会发现Math.random()其实是对 java.util.Random 类的 nextDouble 方法的封装;

2.3.3、在1.3 和 1.4中提出过随机种子的概念,那么我们来看 Random 类;发现构造方法分两中:Random() 和 Random(long seed)

2.3.3.1、Random():无参构造方法;种子有特定公式计算,所以每次执行的种子都会不一致;

2.3.3.2、Random(long seed);有参构造方法;种子是根据 seed 入参计算生成的

注:以上内容仅提供参考和交流,请勿用于商业用途,如有侵权联系本人删除!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/355907.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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