首页 Java java教程 Java如何生成随机数

Java如何生成随机数

Jan 17, 2019 am 10:13 AM

Java生成随机数的方法:首先在程序类开始之前放入import语句;然后创建一个Random对象;最后从某个范围中挑选随机数即可。

Java如何生成随机数

本文操作环境:Windows7系统、Dell G3电脑、Java8.0版。

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

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

 import java.util.Random;
登录后复制

接下来,创建一个Random对象:

 Random rand = new Random();
登录后复制
登录后复制

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

 Random rand = new Random();
for (int j=0;j < 5;j++)
{
  System.out.printf("%12d ",rand.nextInt());
  System.out.print(rand.nextLong());
  System.out.println();
}
登录后复制

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

-1531072189 -1273932119090680678
1849305478  6088686658983485101
1043154343  6461973185931677018
1457591513  3914920476055359941
-1128970433 -7917790146686928828
登录后复制

从某个范围中挑选随机数

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

 Random rand = new Random();
rand.nextInt(40);
登录后复制

只会从0到39中选择一个随机数。要从以1开头的范围中进行选择,只需将1添加到nextInt()方法的结果中即可。例如,要选择1到40之间的数字,请在结果中添加一个:

 Random rand = new Random();
int pickedNumber = rand.nextInt(40) + 1;
登录后复制

如果范围从一个更高的数字开始,您将需要:

减去上限数字的起始编号,然后加一。

将起始编号添加到nextInt()方法的结果中。

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

 Random rand = new Random();
int pickedNumber = rand.nextInt(31) + 5;
登录后复制

随机类是多么随机?

我应该指出,Random类以确定的方式生成随机数。产生随机性的算法基于称为种子的数字。如果种子数已知,那么可以计算出将从算法中产生的数字。为了证明这一点,我将使用Neil Armstrong首次踏上月球之日的数字作为我的种子数(1969年7月20日):

 import java.util.Random;
public class RandomTest {;
  public static void main(String[] args) {
    Random rand = new Random(20071969);
    for (int j = 0; j
登录后复制

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

 3 0 3 0 7 9 8 2 2 5
登录后复制

默认情况下,使用的种子编号由:

 Random rand = new Random();
登录后复制
登录后复制

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

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

以上是Java如何生成随机数的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Java的类负载机制如何起作用,包括不同的类载荷及其委托模型? Java的类负载机制如何起作用,包括不同的类载荷及其委托模型? Mar 17, 2025 pm 05:35 PM

Java的类上载涉及使用带有引导,扩展程序和应用程序类负载器的分层系统加载,链接和初始化类。父代授权模型确保首先加载核心类别,从而影响自定义类LOA

如何使用咖啡因或Guava Cache等库在Java应用程序中实现多层缓存? 如何使用咖啡因或Guava Cache等库在Java应用程序中实现多层缓存? Mar 17, 2025 pm 05:44 PM

本文讨论了使用咖啡因和Guava缓存在Java中实施多层缓存以提高应用程序性能。它涵盖设置,集成和绩效优势,以及配置和驱逐政策管理最佳PRA

如何将JPA(Java持久性API)用于具有高级功能(例如缓存和懒惰加载)的对象相关映射? 如何将JPA(Java持久性API)用于具有高级功能(例如缓存和懒惰加载)的对象相关映射? Mar 17, 2025 pm 05:43 PM

本文讨论了使用JPA进行对象相关映射,并具有高级功能,例如缓存和懒惰加载。它涵盖了设置,实体映射和优化性能的最佳实践,同时突出潜在的陷阱。[159个字符]

如何将Maven或Gradle用于高级Java项目管理,构建自动化和依赖性解决方案? 如何将Maven或Gradle用于高级Java项目管理,构建自动化和依赖性解决方案? Mar 17, 2025 pm 05:46 PM

本文讨论了使用Maven和Gradle进行Java项目管理,构建自动化和依赖性解决方案,以比较其方法和优化策略。

如何使用适当的版本控制和依赖项管理创建和使用自定义Java库(JAR文件)? 如何使用适当的版本控制和依赖项管理创建和使用自定义Java库(JAR文件)? Mar 17, 2025 pm 05:45 PM

本文使用Maven和Gradle之类的工具讨论了具有适当的版本控制和依赖关系管理的自定义Java库(JAR文件)的创建和使用。

See all articles