最近工作中的一个业务需要再确定范围内取出一个随机数,网上到时搜出来一堆可以实现的方法,但是鄙人仍是理解不了,虽说已经copy方法直接完成工作了。今天抽时间整理下,希望能够帮助大家更好的理解随机数的实现原理;

1、网上直接找到的实现方法:

第一种实现方法:

public static String getRandom(int min, int max){
Random random = new Random();
int s = random.nextInt(max) % (max - min + 1) + min;
return String.valueOf(s); }

第二种实现方法:

public static String getRandom(int min, int max){
int s = (int) (Math.random() * (max - min + 1) + min);
return String.valueOf(s);
}

上述俩中方法均可实现确定范围内取出一个随机值的功能,但是我是没有一下看明白是如何实现的,下来把让大家一看就明白的方法贴出来;

public static String getRandom(int min, int max){
Random random = new Random();
int s = random.nextInt(max - min + 1) + min;
return String.valueOf(s); }

聪明的你是不是一下就看明白了,其实我们的random.nextInt(num)只能生成[0,num)范围内的随机数,若想生成[min,max]的随机数,我们可以先这样计算[min-min,max-min+1],于是我们就得出一个[0,max-min+1]这个范围,自然就可以计算出[0,,max-min+1]的随机数,然后将[0,,max-min+1]加上min,就是将这些随机数统一扩大min个,就可以得到[min,max+1]这个范围内的随机数。这样分析是不是很容易理解。

JAVA中随机生成确定范围内的随机数的更多相关文章

  1. java中随机生成字符串的方法(三种)

    org.apache.commons.lang(2.6): 链接:https://pan.baidu.com/s/1k_oeA5AjSt6evoR7zT8gpQ 提取码:yhl5 1.生成的字符串每个 ...

  2. java中随机生成汉字

    main方法中使用: //随机生成100个汉字 String ss=""; for(int i=0;i<100;i++){ ss+=getChinese(i); } Syst ...

  3. java的random生成某个范围内的随机数

    import java.util.Random; /** * @author HP * @date 2019/4/16 */ public class randomTest { public stat ...

  4. JS生成指定范围内的随机数(支持随机小数)

    直接需要函数的话,直接到文章的最后面找. ============================================================= 转载:https://www.cn ...

  5. java中如何生成可执行的jar文件

    java中如何生成可执行的jar文件 最简单的方法就是: jar -cfe Card.jar CardLayoutDemo CardLayoutDemo$1.class CardLayoutDemo$ ...

  6. python中随机生成整数

    1 #可以多运行几次,看看结果是不是随机生成的~ 2 3 import random 4 #调用random模块,与 5 a = random.randint(1,100) 6 # 随机生成1-100 ...

  7. 关于 Math.random()生成指定范围内的随机数的公式推导

    关于 Math.random()生成指定范围内的随机数的公式推导 在 java 中,用于生成随机数的 Math 方法 random()只能生成 0-1 之间的随机数,而对于生成指定区间,例如 a-b ...

  8. 【转载】C#使用Random类来生成指定范围内的随机数

    C#的程序应用的开发中,可以使用Random随机数类的对象来生成相应的随机数,通过Random随机数对象生成随机数的时候,支持设置随机数的最小值和最大值,例如可以指定生成1到1000范围内的随机数.R ...

  9. java Random随机生成一个数

    package java05; import java.util.Random; /* Random随机生成一个数字 1.导包: import java.util.Random; 2.创建 Rando ...

随机推荐

  1. 【原创】大数据基础之Kudu(5)kudu增加或删除目录/数据盘

    kudu加减数据盘不能直接修改配置fs_data_dirs后重启,否则会报错: Check failed: _s.ok() Bad status: Already present: FS layout ...

  2. springboot-oracle工程win下正常,centos下不能访问数据库

    工程在win下正常运行,部署到centos下出现下述异常: ### Error querying database. Cause: org.springframework.jdbc.CannotGet ...

  3. javascript相关的增删改查以及this的理解

    前两天做了一个有关表单增删改查的例子,现在贴出来.主要是想好好说一下this. 下面贴一张我要做的表格效果. 就是实现简单的一个增删改查. 1.点击增加后自动增加一行: 2.点击保存当前行会将属性改成 ...

  4. css高度居中

    1.已知元素高度 // 子盒子 #div1{ width:200px; height:200px; position: absolute; //父元素需要相对定位 top: 50%; left: 50 ...

  5. Hive的日志操作

    想要看hive的日志,我们查看/home/hadoop/hive/conf/hive-log4j2.properties # list of properties property.hive.log. ...

  6. Python 之subprocess模块

    Python subprocess模块运行python的时候,我们都是在创建并运行一个进程.像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序.在Python中, ...

  7. windows控制台,cmd,命令提示符下的基础操作

    打开dos命令窗口1.win+r-->运行-->cmd 2.摁住shift+鼠标右击 选择 在此处打开命令窗口3.在磁盘某文件夹下,选择标题栏中输入框,输入cmd 回车 windows下常 ...

  8. Linux根文件系统和目录结构及bash特性3

    bash的基础特性: 命令补全:        shell程序在接收到用户执行命令的请求,分析完成之后,最左侧的字符串会被当作命令        命令查找机制:            查找内部命令   ...

  9. php is_numeric函数可绕过产生SQL注入

    老老实实mysql_real_escape_string()防作死......is_numeric的SQL利用条件虽然有点苛刻,但还是少用的好= = 某CTF中亦有实测案例,请戳 http://dro ...

  10. QTP(15)

    Test15001_两位数加法器 Option Explicit Dim num1,num2,result,ex 'result 实际结果 = 被测系统结果输入框中的值 'ex 预期结果 = num1 ...