Java随机数(实例一步步解剖)

本文由在读学生Why分享,介绍了Java中生成随机数的三种方式:Java.Util.Random类、Math.Random类和currentTimeMillis类,并给出了相应实例和运行截图。文章鼓励读者亲手实践以加深理解,并提供了笔记下载链接和作者的个人主页链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

哈喽,大家好!我是Why,一名在读学生,目前刚刚开始进入自己的编程学习生涯。虽然学习起步较晚,但我坚信做了才有0或1的可能。学了一段时间以后也是选择在优快云上分享自己的日常笔记,也希望能够在众多道友的大家庭中打成一片。
本文主要讲解java实现随机数的几种案例,如果大家读后觉得有用的话,还请大家多多支持博主:欢迎 ❤️点赞👍、收藏⭐、留言💬
✨✨✨个人主页:java-WangHY


Java中的随机数是怎样产生的呢?

🍎1、Java.Util.Random类

🌾🤡🐢✨🤙💎

util包里面提供的Random类
通过剖析源码发现java.util.Random()有两种构造形式:
        1Random()
            /**
             * 创建一个新的随机数生成器。
             * 此构造函数将随机数生成器的种子设置为一个很可能与此构造函数的任何其他调用不同的值。
             */
            public Random() {
   
                this(seedUniquifier() ^ System.nanoTime());
            }
    
        2Random(long seed)
           /**
             * 使用单个long种子创建新的随机数生成器。种子是通过方法next(int)维护的伪随机数发生器的内部状态的初始值。
			* 调用new Random(seed)相当于:
   			* Random rnd = new Random(); rnd.setSeed(seed); 
             *       参数:seed - 初始种子
             */
            public Random(long seed) {
   
                if (getClass() == Random.class)
                    this.seed = new AtomicLong(initialScramble(seed));
                else {
   
                    // subclass might have overriden setSeed
                    this.seed = new AtomicLong();
                    setSeed(seed);
                }
            }
        
'区别:'
       带有种子的Random类实例,如果随机种子相同那么每次随机生成的结果是一样的;
       不带有随机种子的Random实例,每次随机生成的结果都是随机的
'原因:'
    	不带有随机种子的Random类实例,是以当前时间(System.currentTimeMillis()为初始种子的,
    	这个最后有讲解),这个时间永远不可能重复(就像代码自上而下运行,对象也是依次创建)
    	所以不带有随机种子的Random实例每次随机生成的结果都是随机的。
📈实例
import java.util.Random;

/**
 * @Author jinhuan
 * @Date 2022/3/6
 *
 * 实例化两对Random对象,一对带种子、一对不带种子,下面通过代码简单展示二者的区别
 */
public class RandomTest {
   
    public static void main(String[] args) {
   
        //实例化带种子的Random对象
        Random random01 = new Random(10);
        //等价于 Random random02 = new Random().setSeed(10);
        Random random02 = 
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值