java中一般有两种随机数,一个是Math中random()方法,一个是Random类。
一、Math.random()
随即生成0<x<1的小数。
实例:如何写,生成随机生成出0~100中的其中一个数呢?
Math.random()返回的只是从0到1之间的小数,如果要50到100,就先放大50倍,即0到50之间,这里还是小数,如果要整数,就强制转换int,然后再加上50即为50~100.
最终代码:(int)(Math.random()*50) + 50
二、Random类
Random random = new Random();//默认构造方法
Random random = new Random(1000);//指定种子数字
在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。
相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。
2 、Random类中的常用方法
Random 类中的方法比较简单,每个方法的功能也很容易理解。需要说明的是,Random类中各方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的几率是均等的。下面对这些方法做一下基本的介绍:
a 、public boolean nextBoolean()
该方法的作用是生成一个随机的boolean值,生成true和false的值几率相等,也就是都是50%的几率。
b 、public double nextDouble()
该方法的作用是生成一个随机的double值,数值介于[0,1.0)之间,这里中括号代表包含区间端点,小括号代表不包含区间端点,也就是0到1之间的随机小数,包含0而不包含1.0。
c 、public int nextInt()
该方法的作用是生成一个随机的int值,该值介于int的区间,也就是-2的31次方到2的31次方-1之间。
如果需要生成指定区间的int值,则需要进行一定的数学变换,具体可以参看下面的使用示例中的代码。
d 、public int nextInt(int n)
该方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n。
如果想生成指定区间的int值,也需要进行一定的数学变换,具体可以参看下面的使用示例中的代码。
e 、public void setSeed(long seed)
该方法的作用是重新设置Random对象中的种子数。设置完种子数以后的Random对象和相同种子数使用new关键字创建出的Random对象相同。
3 、Random类使用示例
使用Random类,一般是生成指定区间的随机数字,下面就一一介绍如何生成对应区间的随机数字。以下生成随机数的代码均使用以下Random对象r进行生成:
Random r = new Random();
a 、生成[0,1.0)区间的小数
double d1 = r.nextDouble();
直接使用nextDouble方法获得。
b、生成[0,5.0)区间的小数
double d2 = r.nextDouble() * 5;
因为nextDouble方法生成的数字区间是[0,1.0),将该区间扩大5倍即是要求的区间。
同理,生成[0,d)区间的随机小数,d为任意正的小数,则只需要将nextDouble方法的返回值乘以d即可。
c、生成[1,2.5)区间的小数 [n1,n2]
double d3 = r.nextDouble() * 1.5 + 1;【也就是 r.nextDouble() * (n2-n1)+n1】
生成[1,2.5)区间的随机小数,则只需要首先生成[0,1.5)区间的随机数字,然后将生成的随机数区间加1即可。
同理,生成任意非从0开始的小数区间[d1,d2)范围的随机数字(其中d1不等于0),则只需要首先生成[0,d2-d1)区间的随机数字,然后将生成的随机数字区间加上d1即可。
d、生成任意整数
int n1 = r.nextInt();
直接使用nextInt方法即可。
e、生成[0,10)区间的整数
int n2 = r.nextInt(10);
n2 = Math.abs(r.nextInt() % 10);
以上两行代码均可生成[0,10)区间的整数。
第一种实现使用Random类中的nextInt(int n)方法直接实现。
第二种实现中,首先调用nextInt()方法生成一个任意的int数字,该数字和10取余以后生成的数字区间为(-10,10),因为按照数学上的规定余数的绝对值小于除数,然后再对该区间求绝对值,则得到的区间就是[0,10)了。
同理,生成任意[0,n)区间的随机整数,都可以使用如下代码:
int n2 = r.nextInt(n);
n2 = Math.abs(r.nextInt() % n);
f、生成[0,10]区间的整数
int n3 = r.nextInt(11);
n3 = Math.abs(r.nextInt() % 11);
相对于整数区间,[0,10]区间和[0,11)区间等价,所以即生成[0,11)区间的整数。
g、生成[-3,15)区间的整数
int n4 = r.nextInt(18) - 3; 【也就是 r.nextInt() * (n2-n1)+n1】 n1是个负数
n4 = Math.abs(r.nextInt() % 18) - 3;
生成非从0开始区间的随机整数,可以参看上面非从0开始的小数区间实现原理的说明。
分享到:
相关推荐
在Java编程语言中,生成随机数和排序是两个常见的任务,它们在许多应用场景中都扮演着重要角色。这里我们将深入探讨这两个主题,并提供一些解决实际问题的方法。 首先,让我们来看看如何在Java中生成随机数。Java...
主要是一个Java获取计算机基本信息并且在Web页面上以ExtJs4的图表展示,这里删除了ExtJs4的资源和一个算法产生验证码,因为这个算法最终使用到了产品中,所以就把这个测试的类删除了,各位不好意思了
在 Java 中,可以使用 Math.random() 方法生成随机数,然后根据概率分布判断返回的数字。 在给定的代码中,作者定义了一个 MathRandom 类,其中包含了六个静态变量,分别表示数字 0 到 5 的出现概率。这些概率按照...
### 在Java中产生随机数的两种方法 在Java编程中,生成随机数是常见的需求之一。根据提供的文件信息,本文将详细介绍两种在Java中生成随机数的方法:通过`Math.random()`函数与`java.util.Random`类。这两种方法各...
在Java编程语言中,随机数的应用非常广泛,可以用于各种模拟、游戏开发、加密算法以及数据分析等场景。本文将深入探讨Java中生成随机数的方法、类库和实用技巧。 首先,Java提供了一个内置的`java.util.Random`类,...
在计算随机数的一价和场景中,我们可以设置一个线程池,预先创建好一定数量的线程,每个线程从任务队列中取出一部分随机数进行累加,最后汇总所有线程的计算结果。这种方式既高效又灵活,可以应对任务量的变化。 **...
在Java编程语言中,生成随机数是常见的需求,可以用于各种场景,如模拟随机行为、测试、加密等。本文将详细介绍几种在Java中生成随机数的方法,并以代码示例进行说明。 1. 使用`Math.random()`函数: `Math.random...
"随机数计算.rar"这个压缩包文件很可能是提供了一些工具或代码,帮助用户生成和计算随机数。"圣诞袜"这个标签可能暗示了这些内容可能与节日活动或者特定的编程挑战有关,比如编程游戏中随机分配礼物的机制。 随机数...
在Java编程语言中,生成随机数并进行加法运算是一项基础但重要的技能,尤其是在开发涉及概率计算、模拟或游戏逻辑的程序时。本教程将详细解释如何在Java中生成随机数以及如何执行加法操作。 首先,让我们了解如何在...
猜数游戏的功能要求是:计算机产生随机数,玩家输入数字,猜中即胜,猜不中,提示是大了还是小了,继续猜,直至猜到,给出所用时间和评语。游戏界面可以使用字符界面或图形界面实现。 游戏设计 游戏的设计原理图如...
Apache Commons Math3库,作为JAVA数学计算包,为开发者提供了强大的工具,使得在Java中进行统计学运算变得简单易行。这个库不仅涵盖了数据概述、比较、回归分析、分类、聚类以及因素分析等多种统计方法,还具有高度...
在Java编程中,生成随机数是一项常见的任务,可用于各种用途,如创建随机密码、模拟随机事件或在游戏开发中。本篇文章将深入探讨如何在Java中生成随机数,并特别关注字符串操作的相关技巧。 首先,Java提供了`java....
Java语言中生成随机数的方式主要有三种。首先,我们可以使用`Math.random()`方法,该方法会生成一个0.0到1.0之间的浮点数,通过适当的转换可以得到指定范围内的整数或浮点数。例如,要生成0到100之间的整数,可以...
本文将详细介绍如何在Java中通过成员方法重载来实现对100以内随机数大小的比较。这种方法不仅能够提高代码的可读性和可维护性,还能使得程序更加灵活,能够应对不同数据类型之间的比较。 #### 成员方法重载的概念 ...
Java中的随机数生成是通过java.util.Random类来实现的,该类提供了一种伪随机的生成机制。Jvm 通过传入的种子(seed)来确定生成随机数的区间,只要种子一样,获取的随机数的序列就是一致的。而且生成的结果都是可以...
### 浅谈Java中的几种随机数 在编程领域,随机数生成是不可或缺的一部分,尤其在游戏开发、密码学、统计模拟等应用场景中扮演着至关重要的角色。Java作为一门广泛使用的编程语言,提供了多种生成随机数的方式,每种...
在Java编程语言中,"猜随机数"是一个常见的练习,用于教授条件判断、循环和随机数生成等基础知识。下面我们将详细探讨这个主题。 首先,让我们理解`标题` "猜随机数java代码"所指的内容。这通常是一个简单的游戏...
StdRandom类是Java语言中用于生成随机数的工具类,提供了一系列的静态方法来满足不同用例的需求。该类的主要功能是生成随机数,包括基本的随机数、uniform分布随机数、bernoulli分布随机数、gaussian分布随机数等。...
在Java编程语言中,获取随机数是常见的需求,用于模拟各种随机行为或在游戏中生成随机事件等。以下是三种在Java中生成随机数的方法,以及一些相关的知识点总结: 1. **方法1:使用Math.random()** `Math.random()`...
Java标准库中的`Math`类提供了大量的静态方法,用于执行基本的数学运算,如三角函数、指数、对数、平方根、随机数生成等。例如,`Math.pow(a, b)`用于计算a的b次方,`Math.random()`则返回一个0.0到1.0之间的随机...