#随机数#生成指定范围的随机数

illustration

捡起丢下一个多月的Java,重新复习书本上的东西,来到随机数这一部分:
问题:生成指定范围的随机数,比如生成[10,20)区间内的随机整数、生成[0,50]区间内的随机整数。

Java内有两种实现伪随机数的方法,一种是java.util.Random(需要手动导入),另一种是Math.random

##1.基于Random类

1import java.util.Random; 2 3/** 4 * Created by Administrator on 2016/11/26. 5 */ 6public class Ram { 7 public static void main(String[] args){ 8 Random b = new Random(20); 9 int a = b.nextInt(51); 10 while (a != 50){ 11 a = b.nextInt(51); 12 System.out.println(a); 13 if (a == 50){ 14 System.out.println("Hell yeah"); 15 } 16 } 17 System.out.println(a); 18 } 19} 20

解释下:在实例化时的20只是作为一个种子,种子数只是随机算法的起源数字,和生成的随机数的区间没有任何关系,如果没有指定数字,则使用系统时间作为种子

nextInt或者nextDouble是指定一个数的最大范围,但不包括这个数,上面的代码生成的是[0,50]的整数,输出的仅是为了方便查看结果

##2.基于后者

1/** 2 * Created by Administrator on 2016/11/27. 3 */ 4public class Ram1 { 5 public static void main(String[] args){ 6 int a = (int)(Math.random()*51); 7 while (a != 50){ 8 a = (int)(Math.random()*51); 9 System.out.println(a); 10 if (a == 50){ 11 System.out.println(a); 12 break; 13 } 14 } 15 System.out.println(a); 16 } 17} 18

random()会生成一个[0,1)内的浮点数,如果你想生成[0,50]的整数,你需要在Math.random()后乘51,再进行显式转换。如果你想把区间收缩,比如[10,50],你需要在乘41后再加10,这样,最小的数值就是10,而最大的数值不会超过51,显式转换后就会是50

下面的代码是用random函数来生成[10,20)里的随机数:

1public class Ram1 { 2 public static void main(String[] args){ 3 for(int i = 0;i < 15;i++){ 4 int a = (int)(Math.random()*10+10); 5 System.out.println(a); 6 } 7 } 8} 9

输出的结果:

119 219 312 418 510 613 716 818 911 1010 1110 1216 1314 1415 1519 16

另一种实现:

1import java.util.Random; 2 3/** 4 * Created by Administrator on 2016/11/26. 5 */ 6public class Ram { 7 public static void main(String[] args){ 8 Random b = new Random(); 9 for(int i = 0;i < 15;i++){ 10 int a = b.nextInt(10)+10; 11 System.out.println(a); 12 } 13 } 14} 15

两种方案都相当接近,使用时视情况选择吧,就酱

##一篇比较好的参考 随机数

点赞
收藏

评论区

加载中...

相关推荐

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

swap空间的增减方法

(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap

Mock 语法讲解

是生成随机数据,拦截Ajax请求的JavaScript库。本文来介绍下Mock的常用语法。模拟数据生成随机数据Mock.Random.boolean()生成一个随机的布尔值。例如:返回值为true或false。Mock.Random.integer(min

分布式id如何生成

1.UUID生成通过网卡、时间、随机数来保证生成的唯一的字符串。优点:(1)本地生成,生成简单(2)速度快(3)高可用;缺点:(1)无序,如果存入mysq,影响B的操作性能,因为B树是需要排序的;(2)占用空间较大(36个