当前位置:首页 > Java技术 > JAVA随机数编程

JAVA随机数编程

2022年09月15日 23:27:16Java技术14

Java中的随机数生成

在开发应用程序时,我们经常需要生成随机数。Java提供了主要通过java.lang.Math和java.util.Random类生成随机数的支持。

在本文中,我将讨论根据不同类型的需求生成随机数的不同方法。

使用数学类的随机数

Java在java中提供Math类。util软件包以生成随机数。

该数学类包含静态的数学。random () 方法生成double型随机数 。

的随机()方法返回一个双带正号的值,大于或等于0.0且小于1.0。当您调用Math时。random (),在后台是java 。实用程序。创建并使用随机伪随机数生成器对象。

您可以使用Math 。带有或不带有参数的random ()方法。如果提供参数,则该方法会在给定参数内生成随机数。

使用Math的代码。随机()方法:

public static double getRandomNumber(){

double x = Math.random();

return x;

}

所述getRandomNumber的()方法使用数学。返回一个大于等于0.0且小于1.0的正double值的random ()方法。

运行代码的输出为:

Double between 0.0 and 1.0: SimpleRandomNumber = 0.21753313144345698

给定范围内的随机数

为了在给定范围之间生成随机数,您需要指定范围。实现此目的的标准表达式是:

(Math.random() * ((max - min) + 1)) + min

让我们将此表达式分解为几个步骤:

首先,将要覆盖的值范围的大小乘以Math的结果。random ()产生。

Math.random() * ( max - min ) 返回范围为[ 0 ,max – min ]的值 ,其中不包括max。例如,如果你想[ 5 ,10 ],你需要支付5个整数值,所以你可以使用数学。随机()* 5。这将在范围返回一个值[ 0 ,5 ],其中不包括5。

接下来,将此范围上移到您要定位的范围。您可以通过添加最小值来实现。

(Math.random() * ( max - min )) + min

但这仍不包括最大值。

要获得包含的最大值,您需要在范围参数(max - min )上加1。这将返回指定范围内的随机双精度数。

double x = (Math.random()*((max-min)+1))+min;

有多种实现上述表达式的方法。让我们看看其中的几个。

给定范围内的随机双精度

默认情况下,Math 。random ()方法在每次调用时都会返回double类型的随机数。在指定范围之间生成随机双精度值的代码为:

public static double getRandomDoubleBetweenRange(double min, double max){

double x = (Math.random()*((max-min)+1))+min;

return x;

}

您可以通过传递这样的参数来从main方法中调用前面的方法。

System.out.println("Double between 5.0 and 10.00: RandomDoubleNumber = "+getRandomDoubleBetweenRange(5.0, 10.00));

输出是这个。

System.out.println("Double between 5.0 and 10.00: RandomDoubleNumber = "+getRandomDoubleBetweenRange(5.0, 10.00));

给定范围内的随机整数

在指定范围之间生成随机整数值的代码是这样的。

public static double getRandomIntegerBetweenRange(double min, double max){

double x = (int)(Math.random()*((max-min)+1))+min;

return x;

}

前面的getRandomIntegerBetweenRange ()方法在给定范围之间生成一个随机整数。作为数学。random ()方法生成双精度类型的随机数,您需要截断小数部分并将其转换为int以获得整数随机数。您可以通过传递以下参数从main方法中调用此方法:

System.out.println("Integer between 2 and 6: RandomIntegerNumber = "+getRandomIntegerBetweenRange(2,6));

输出是这个。

Integer between 2 and 6: RandomIntegerNumber = 5

注意:您可以传递一个负值范围以在该范围内生成一个随机负数。

使用随机类生成随机数

您可以使用java 。实用程序。随机类,用于生成不同类型的随机数,例如int,float,double,long和boolean。

要生成随机数,请首先创建Random类的实例,然后调用随机值生成器方法之一,例如nextInt (),nextDouble ()或nextLong ()。

Random的nextInt ()方法接受一个有界整数,并返回一个从0(含)到指定界限(不包括)的随机整数。

使用nextInt ()方法的代码是这个。

public static int generateRandomInt(int upperRange){

Random random = new Random();

return random.nextInt(upperRange);

}

使用nextInt ()方法生成范围内整数的代码是:

public static int generateRandomIntIntRange(int min, int max) {

Random r = new Random();

return r.nextInt((max - min) + 1) + min;

}

所述nextFloat ()和nextDouble ()方法允许生成之间浮点和双精度值0.0和1.0。

使用这两种方法的代码是:

public static double generateRandomDouble(){

Random random = new Random();

return random.nextDouble();

}

public static float generateRandomFloat(){

Random random = new Random();

return random.nextFloat();

}

Java 8中的随机数生成功能

Java 8在java中引入了一种新方法 ints ()。实用程序。随机类。的整数()方法返回伪随机无限流INT值。您可以通过提供最小值和最大值将随机数限制在指定范围内。

使用Random的代码。ints ()方法生成指定范围内的随机整数值是这个。

public static int getRandomNumberInts(int min, int max){

Random random = new Random();

return random.ints(min,(max+1)).findFirst().getAsInt();

}

所述getRandomNumberInts ()方法生成之间的随机整数的流分(含)和最大值(不含)。当ints ()方法产生一个IntStream时,代码将调用findFirst ()方法,该方法返回描述此流的第一个元素的OptionalInt对象。然后,代码调用getAsInt ()方法以返回OptionalInt中的int值。

使用Random的代码。生成指定随机整数值流的ints ()方法是:

public static void getStreamOfRandomInts(int num) {

Random random = new Random();

random.ints(num).sorted().forEach(System.out::println);

}

The code to call the preceding method is:

System.out.println("Random int stream: RandomIntStreamofSize = ");

RandomDemo.getStreamOfRandomInts(5);

前面代码的输出是:

Random int stream: RandomIntStreamofSize =

-1861317227

-1205557317

453883217

762357682

1725970934

使用Random的代码。ints ()方法生成一个指定范围内的指定数量的随机整数流,该流是:

public static void getStreamOfRandomIntsWithRange(int num, int min, int max) {

Random random = new Random();

random.ints(num,min, max).sorted().forEach(System.out::println);

}

调用上述方法的代码是:

System.out.println("Random int stream of specified size in range: RandomIntStreamofSizeInRange = ");

RandomDemo.getStreamOfRandomIntsWithRange(5,0,10);

前面代码的输出是:

Random int stream of specified size in range: RandomIntStreamofSizeInRange =

2

2

3

4

6

除了ints ()之外,Java 8引入Random类的其他一些常用方法(可以返回顺序的随机数流)是:

LongStream 多头()

DoubleStream 双打()

概括

在java的。实用程序。随机类实现通常称为线性同余生成器(LCG)的东西。它的设计速度很快,但不满足实时使用的要求,例如用于Web服务器上的唯一会话ID生成,科学实验,密码学或涉及金钱的彩票和抽奖活动。对于这种情况,还有其他选择,我将在以后的文章中介绍。

对于不耐烦的读者,您可以看一下SecureRandom类和Xorshift随机数生成器。

此外,有趣的资源是random.org,这是一个真正的随机数服务,可通过generates​​声生成随机性。

原文链接:https://blog.csdn.net/Beibnjin/article/details/113827586?utm_medium=distribute.pc_category.none-task-blog-hot-1.nonecase&depth_1-utm_source=distribute.pc_category.none-task-blog-hot-1.nonecase&request_id=

作者:钱康来
来源链接:https://blog.csdn.net/weixin_30344519/article/details/114922812

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/41514.html

标签: Java随机数
分享给朋友:

“JAVA随机数编程” 的相关文章

Java随机数Random

记录一个比较操蛋的问题 1、随机数是由随机种子根据一定的计算方法计算出来的结果。只要计算方法一定,随机种子一定,那么计算出来的结果就相同。 2、如果你每次调用srand()时都提供相同的种子值,那么,你将会得到相同的随机数序列 3、Rand...

利用java随机数模拟求π的值

利用java随机数模拟求π的值

我们从小学的时候就已经熟知了π的值是介于3.1415926到3.1415927之间的一个无限不循环小数,今天我们就来利用java中的Math.random()这个随机数产生器来计算π的值,产生的数值范围为0~1。 用随机数来计算π的值可能...

Java获取随机数

方法1 (数据类型)(最小值+Math.random()*(最大值-最小值+1)) 例: (int)(1+Math.random()*(10-1+1)) 从1到1...

java byte 随机数

Java中想要生成一个指定范围之内的随机数字通常两种方法:调用 Math 类的 random() 方法 使用 Random 类。 Random 类提供了丰富的随机数生成方法,可以产生 boolean、int、long、float、byte 数组以及 do...

java随机数类型

import java.util.Random; /** Java实用工具类库中的类java.util.Random提供了产生各种类型随机数的方法。 它可以产生int、long、float、double以及Goussian等类型的随机数。...

java随机数的原理

Java中随机数的产生方式与原理详解 发布于 2020-6-9| 复制链接 摘记: Java中随机数的产生方式与原理查阅随机数相关资料,特做整理 首先说一下java中产生随机数的几种方式 在j2se中我们可以使用Math.rand...

java中Random(long seed)方法与rRandom()方法的使用产生随机数

java中Random(long seed)方法与rRandom()方法的使用产生随机数   Random 类作为JAVA中用于产生的随机数 ,new  Random(10)  :10是种子数。...

Java 工具类—日期获得,随机数,系统命令,数据类型转换

1 package tems; 2 3 import java.text.SimpleDateFormat; 4 import java.util.Arrays; 5 import java.util.Calendar; 6 import java....

java 随机数 【指定范围】

在Java中我们可以使用java.util.Random类来产生一个随机数发生器。它有两种形式的构造函数,分别是Random()和Random(long seed)。Random()使用当前时间即System.currentTimeMillis()作为发生器的种子,Rando...

java随机数的三种方法

方法1(数据类型)(最小值+Math.random()*(最大值-最小值+1))例: (int)(1+Math.random()*(10-1+1)) 从1到10的int型随数 方法2获得随机数 for (int i=0;i<30...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。