必威体育Betway必威体育官网
当前位置:首页 > IT技术

java生成指定范围的随机数(太屌了)

时间:2019-09-04 14:42:13来源:IT技术作者:seo实验室小编阅读:59次「手机版」
 

java随机数

生成指定范围内的随机数

这个是最常用的技术之一。程序员希望通过随机数的方式来处理众多的业务逻辑,测试过程中也希望通过随机数的方式生成包含大量数字的测试用例。问题往往类似于:

如何随机生成 1~100 之间的随机数,取值包含边界值 1 和 100。

或者是:

如何随机生成随机的3位整数?

等等……

java 语言为例,我们观察其 Random 对象的 nextint(int) 方法,发现这个方法将生成 0 ~ 参数之间随机取值的整数。例如(假设先有 Random rand = newRandom();,下同):

rand.nextInt(100);

这行代码将生成范围0~100 之间的随机数,有趣的是,取值可能为 0 ,但不可能为 100。我们用中学数学课学习的区间表示法,表示为:[0, 100)。

那么如果要获得区间 [1~100]的随机数,该怎么办呢?稍微动动脑筋就可以想到:区间 [0, 100) 内的整数,实际上就是区间 [0, 99]。因为最大边界为100,可惜不能等于100,因此最大可能产生的“整数”就是99。

既然rand.nextInt(100) 获得的值是区间 [0, 99],那么在这个区间左右各加 1,就得到了区间 [1, 100]。因此,代码写成:

rand.nextInt(100)+ 1;

即可。运行下面的代码,将获得 [1, 100] 的 10 个取值。

import java.util.Random;

public class Test {

public static void main(String[] args){

Random rand = new Random();

for(int i=0; i<10; i++) {

System.out.println(rand.nextInt(100) + 1);

}

同理,很容易知道如果要获得随机两位整数,代码写成:rand.nextInt(90) + 10;

你一定很惊讶,为什么是这么写出来的。其实,在 nextInt() 方法中作为参数的数字 90 表示:你希望生成的随机数的所有取值的可能性的数量(在本命题中,两位整数取值为 [10, 99],共90个数);加好后面的数字 10 ,表示区间的最小取值。

你可以验证下,按照这样理解,[1, 100] 的随机数,是不是应该写成rand.nextInt(100) + 1 。千万不要把参数 100 理解为最大取值。只是区间 [1, 100] 正好从 1 开始,所以最大取值和取值可能性数量正好同为 100。

因此,

生成随机三位数的代码为:

rand.nextInt(900)+ 100;

生成区间 [64,128] 中随机值的代码为:

rand.nextInt(65)+ 64;

取值可能性的数量是如何计算出来的呢?当然是 最大取值-最小取值+1 ,所以,有最终公式如下

// For Java

int randNumber =rand.nextInt(MAX - MIN + 1) + MIN; // randNumber 将被赋值为一个 MIN 和 MAX 范围内的随机数

相关阅读

Java集合大全

我们由这张思维导图来看看我们用到的集合及其优缺点: 标题 我们从右边开始看, List、Set、Queue都继承的java.util.Collection接口

java调用webservice接口 三种方法

摘自其它:webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webser

MyEclipse运行JAVA Web时出现HTTP Status 500错误

今天用MyEclipse运行前几个月前写的一个系统,出现了HTTP Status 500错误。这个系统是用SSH框架写的,数据库用的是MYSQL。造成这个错

JavaScript中的hasOwnProperty()和isPrototypeOf()

这两个属性都是Object.prototype提供的Object.prototype.hasOwnProperty()hasOwnProperty()方法用来判断某个对象是否含有指定的

Java小程序 —— 简单五子棋

本程序适用于java初学者巩固类与对象、事件响应、awt包中各种工具的相关概念以及对逻辑能力的锻炼需要注意的有:①要加入java界面

分享到:

栏目导航

推荐阅读

热门阅读