Random指定随机种子遇到的坑

编程入门 行业动态 更新时间:2024-10-08 06:21:41

Random指定随机<a href=https://www.elefans.com/category/jswz/34/1769131.html style=种子遇到的坑"/>

Random指定随机种子遇到的坑

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

文章目录

  • 前言
  • 指定随机种子出现的问题?
  • 总结


前言

业务中,之前有一个抽奖的需求,之初想让固定的奖品和玩家绑定一个固定的池子,也就是每个用户对应抽奖的池子的随机种子是固定的!但是这样就会遇到一个巨大的坑!

在指定Random随机种子的时候一定要谨慎!

指定随机种子出现的问题?

在计算机编程中,随机数生成算法实际上是通过确定性的计算来产生伪随机数序列。当你在使用随机数生成器时,你可以选择设置一个种子(seed),这个种子作为生成随机数的起始点。

当你指定一个特定的种子时,随机数生成器将使用该种子作为起点,并按照确定性的计算规则生成一个伪随机数序列。这意味着,只要你使用相同的种子,每次运行生成的随机数序列将是相同的。

在Java中,java.util.Random类的nextInt()方法使用当前时间作为默认的种子,以确保每次程序运行时生成不同的随机数序列。但是,如果你在创建Random对象时指定了一个特定的种子,那么每次运行生成的随机数序列将是相同的,这对于调试和测试来说是很有用的。

以下是一个示例代码,展示了如何使用指定的种子生成相同的随机数序列:

import java.util.Random;public class RandomExample {public static void main(String[] args) {long seed = 1234; // 指定种子Random random = new Random(seed);for (int i = 0; i < 5; i++) {int randomNumber = random.nextInt();System.out.println(randomNumber);}}
}

我们先运行一下看看输出

-1517918040
1115789266
-208917030
1019800440
-611652875

然后我们再次运行N次 结果都是一样的

在上面的代码中,我们指定了种子为1234,并使用该种子创建了一个Random对象。每次运行程序时,生成的随机数序列都将是相同的。如果你想要每次运行生成不同的随机数序列,请不要指定种子,或者使用不同的种子值。

需要注意的是,虽然这种方法可以生成相同的随机数序列,但它实际上是伪随机数序列,因为它们是通过算法计算得出的,并不是真正的随机数。

总结

指定随机种子虽然可以生成相同的随机数序列,是有规律可循的,是可以通过算法算出来的,并不是真正的随机!非必要情况!不要指定随机种子!

更多推荐

Random指定随机种子遇到的坑

本文发布于:2023-11-17 16:20:23,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1644829.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:种子   Random

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!