用java生成随机数

生成一系列随机数是经常出现的常见任务之一。在Java中,只需使用Java.util.Random类即可实现。...

生成一系列随机数是经常出现的常见任务之一。在Java中,只需使用Java.util.Random类即可实现。

Man holding glasses, while writing code on laptop and multiple monitors.

与使用任何API类一样,第一步是将import语句放在程序类开始之前:

接下来,创建一个随机对象:

随机对象为您提供了一个简单的随机数生成器。对象的方法提供了拾取随机数的能力。例如,nextInt()和nextLong()方法将返回一个分别在int和long数据类型的值范围(负值和正值)内的数字:

返回的数字将随机选择int和long值:

从一定范围内随机选取数字

通常,要生成的随机数需要在一定范围内(例如,包括1到40之间)。为此,nextInt()方法还可以接受int参数。它表示数字范围的上限。但是,上限数字不包括在可拾取的数字中。这听起来可能令人困惑,但nextInt()方法从零开始工作。例如:

将仅从0到39(含)之间选择一个随机数。要从以1开头的范围中进行拾取,只需将1添加到nextInt()方法的结果中。例如,要选择一个介于1到40之间的数字(包括向结果中添加一个),请执行以下操作:

如果范围从大于1的数字开始,则需要:

  • 从上限数减去起始数,然后加一。
  • 将起始编号添加到nextInt()方法的结果中。

例如,要从5到35(包括5到35)中选择一个数字,上限数字将为35-5+1=31,需要将5添加到结果中:

随机类有多随机?

我应该指出,Random类以确定性的方式生成随机数。产生随机性的算法基于一个称为种子的数字。如果种子数已知,那么就有可能计算出算法将产生的数字。为了证明这一点,我将使用尼尔·阿姆斯特朗首次登上月球的日期的数字作为我的种子编号(1969年7月20日):​

无论是谁运行此代码,生成的“随机”数字序列将是:

默认情况下,以下人员使用的种子编号:

是自1970年1月1日以来的当前时间(毫秒)。通常,这将产生足够的随机数用于大多数目的。但是,请注意,在同一毫秒内创建的两个随机数生成器将生成相同的随机数。

对于必须具有安全随机数生成器(例如,赌博程序)的任何应用程序,在使用Random类时也要小心。可以根据应用程序运行的时间猜测种子数。通常,对于随机数绝对重要的应用程序,最好找到随机对象的替代品。对于大多数应用程序,只要有一个特定的随机元素(例如,棋盘游戏的骰子),它就可以正常工作。

  • 发表于 2021-09-23 19:45
  • 阅读 ( 167 )
  • 分类:编程

你可能感兴趣的文章

最酷冒险的8个最佳地雷探测器种子

... 注意:对于那些对幕后活动感兴趣的人来说,下面是随机数是如何影响现代游戏的。 ...

  • 发布于 2021-03-18 01:26
  • 阅读 ( 190 )

什么是rng?给玩家上的一课

... RNG代表随机数发生器。这被定义为一种随机产生数字的装置或算法。在游戏术语中,RNG指的是每次你玩的时候都不一样的事件。 ...

  • 发布于 2021-03-19 11:50
  • 阅读 ( 201 )

强随机密码的5个最佳在线密码生成器

...完美的密码是很棘手的。谢天谢地,您可以使用在线密码生成器为您的帐户创建一个强大且唯一的密码。下面是最好的在线强随机密码生成器。 ...

  • 发布于 2021-03-20 00:00
  • 阅读 ( 903 )

rpg游戏开发中的6项关键技术

...最重要的机制都是值得的。从游戏设计软件到人工智能和随机数生成器,我们已经将这些机制分解出来供您探索。 ...

  • 发布于 2021-03-28 08:09
  • 阅读 ( 540 )

如何在word中生成随机文本

...板或填充文本。一种解决方案是使用lorem ipsum或虚拟文本生成器来创建文本。或者,您可以直接在Word中创建文本。 使用rand公式生成随机文本 如果要在Word文档中使用随机(但连贯)文本作为填充内容,可以使用Word提供的随机...

  • 发布于 2021-04-03 15:30
  • 阅读 ( 165 )

从linux命令行生成随机密码的10种方法

...是,你可以用几百种不同的方法来做同样的事情,甚至像生成随机密码这样简单的事情也可以用几十种不同的命令来完成。这里有10种方法。 我们从命令行Fu收集了所有这些命令,并在自己的Linux PC上进行了测试,以确保它们正...

  • 发布于 2021-04-11 02:37
  • 阅读 ( 147 )

让这个机器人twitter作曲者用随机生成的音乐为你唱小夜曲

...是愚蠢的朋克,而是由Twitter机器人@MelodyBot3456每小时随机生成的音乐。正如你从自动生成的音乐中所期待的那样,这些短歌(如果你可以这么称呼它们的话)通常都很奇怪,而且经常会朝着出乎意料和搞笑的方向发展。 ...

  • 发布于 2021-04-16 02:36
  • 阅读 ( 125 )

jre公司(jre)和软件开发包(sdk)的区别

...来创建可以跨多个操作系统甚至跨internet运行的小程序。生成的程序不会在任何操作系统的本机代码中编译,因为这会导致生成的程序无法在其他操作系统中执行。程序被编译成java字节码,这是任何操作系统都无法理解的。 为...

  • 发布于 2021-06-22 13:03
  • 阅读 ( 185 )

系统gc(system gc)和java中的运行时gc(runtime gc in java)的区别

...运行垃圾收集器,从未使用的对象获取内存,为当前对象生成内存。运行时gc是一种实例方法,它建议Java虚拟机(JVM)运行垃圾收集器,从未使用的对象获取内存,为当前对象生成内存。 基础 因此,系统gc和运行时gc的主要区别...

  • 发布于 2021-07-01 04:58
  • 阅读 ( 207 )

日食(eclipse)和智能(intellij)的区别

...IntelliJ在内存管理方面表现不好。它确实很慢。自动代码生成Eclipse提供了自动生成代码的机制。然而,对于程序员来说,使用它既不有效也不容易。IntelliJ中的自动代码生成是可定制的,非常简单eclipse和intellij之间的比较表(以...

  • 发布于 2021-07-07 12:25
  • 阅读 ( 206 )
AN22573724
AN22573724

0 篇文章

相关推荐