当前位置: 首页 > article >正文

Java中随机数函数Random()详解+案例

Java中Random()对象是生成随机数的对象。Random()有两种构造方法:

       Random():创建一个新的随机数生成器,这种方式采用默认的种子。

       Random(long seed):使用seed为种子创建一个新的随机数生成器。    

种子的作用:我们在创建Random对象的时候,如果不设定种子,对象会采用默认的种子(默认当前系统时间的毫秒数为种子)。Random()对象生成的随机数是伪随机数(通过算法产生的随机数都是伪随机数),这就意味着如果我们知道了种子,或者已经产生的随机数,都可能获得接下来随机序列的信息(这样就使得随机数有了可预测性,如果种子数一样,则会生成相同的随机数,具体可以看:案例1)。只有通过真实的随机时间产生的随机数才是真随机。例如通过机器的硬件噪声来产生的随机数、通过当前环境pm10数据产生的随机数。虽然两种构造方法都是伪随机,但是无参的构造方法具有更强的随机性,能满足一般统计上的随机数要求。另外,种子数只是随机算法的起源数字,和生成的随机数没有任何关系,可以随意设置合法的种子数

案例1:

 // 种子数都设为6
Random numList = new Random(6);
Random numList2 = new Random(6);
// 随机生成10个随机数
for(int i=0; i<10; i++) {//生成一个[0,10)之间的随机数int num =  numList.nextInt(10) ;int num2 =  numList2.nextInt(10) ;System.out.println("num1 =" + num + ", num2 = " + num2);
}

      

案例2:

       常用随机数的方法都是生成某个区间的随机数

Random numList = new Random();
// 随机生成10个随机数
System.out.println("生成一个[50,100)之间的随机数:");
for(int i=0; i<10; i++) {//生成一个[50,100)之间的随机数int num =  numList.nextInt(50) + 50 ;System.out.print(num + " ");
}
// 生成一个[50,100)之间的随机数:
// 96 73 76 95 71 78 77 88 66 92
注意:Random()生成的随机数不能保证重复的数据,如果需要生成重复的数据,则需要跟集合配置使用。

案例三:

/*** 生成一个特定格式的字符串数组* 字符串格式为:*  1,特定字符串头:YGMANG*  2,6个数字+字母的随机大写字符*  3,目前的时间戳:时间格式为yyyyMMddHHmmss*/
@Test
public void arrayTest() {StringBuffer flag = new StringBuffer(); //定义一个边长的字符串对象String headNUm = "YGWNGX"; //设置字符串固定头flag.append(headNUm);String sources = "0123456789ABCDEFIJKLMNOPQRSTUVWXYZ"; //定义一个数字+字母的字符串Random rand = new Random();SimpleDateFormat myFmt = new SimpleDateFormat("yyyyMMddHHmmss");//规定生成时间戳的格式for (int j = 0; j < 6; j++){flag.append(sources.charAt(rand.nextInt(sources.length())));}Date date = new Date();flag.append(myFmt.format(date));System.out.println("生成的随机字符串为:" + flag.toString());/*** 生成的结果为:* 生成的随机字符串为:YGWNGXOKW9DK20191017091540*/
}

             

Random9()方法摘要:

Java.util.Random()方法摘要:

方法

返回值

解释

next(int bits)

int

生成下一个伪随机数。

nextBoolean()

boolean

返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的boolean值。

nextBytes(byte[] bytes)

void

生成随机字节并将其置于用户提供的 byte 数组中。

nextDouble()

double

返回下一个伪随机数,它是取自此随机数生成器序列的、在0.0和1.0之间均匀分布的 double值

nextFloat()

float

返回下一个伪随机数,它是取自此随机数生成器序列的、在0.0和1.0之间均匀分布float值。

nextGaussian()

double

返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的double值,其平均值是0.0标准差是1.0。

nextInt()

int

返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。

nextInt(int n)

int

返回一个伪随机数,它是取自此随机数生成器序列的、在(包括和指定值(不包括)之间均匀分布的int值。

nextLong()

long

返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。

setSeed(long seed)

void

使用单个 long 种子设置此随机数生成器的种子

给出几个例子:

1.生成[0,1.0)区间的小数:double d1 = r.nextDouble();

2.生成[0,5.0)区间的小数:double d2 = r.nextDouble() * 5;

3.生成[1,2.5)区间的小数:double d3 = r.nextDouble() * 1.5 + 1;

4.生成-231到231-1之间的整数:int n = r.nextInt();

5.生成[0,10)区间的整数:

int n2 = r.nextInt(10);//方法一

n2 = Math.abs(r.nextInt() % 10);//方法二

http://www.lryc.cn/news/2420818.html

相关文章:

  • 获取字符串首字母拼音
  • Android快速入门_总结
  • 十个让你获得高质量外链资源的方法
  • 基于Qualcomm Robotics RB5边缘侧AI应用—人群热力图
  • joomla本地安装全过程
  • [风潮]三颗猫饼干
  • VM虚拟机和Centos镜像官网的下载、安装和激活(超详细教程)
  • ajax详解以及各种封装
  • GIS中的空间参考
  • read失败报错1 Operation not permitted
  • PHP汉字转拼音(有声调、无声调、首字母、首字母大写)
  • 软件工程之项目管理
  • 基于MDK编程STM32程序无法使用,硬件仿真在汇编窗口看到停留在“0x0800XXXX BEAB BKPT 0xAB //进入调试模式”...
  • 高频词汇快背
  • w7下如何安装linux双系统,Win7下安装UBuntu双系统详细教程
  • 行为识别系列:win11系统AVA2.1数据集制作、训练、测试、本地视频验证(完整已跑通)
  • 你想要的宏基因组-微生物组知识全在这(2023.5)
  • 我快被食人花吃掉了。
  • 2018蓝桥杯C/C++ A组C组题目汇总
  • 2023年“移动开发”技术再洗牌,IOS砍一半,Android砍三分之一
  • 心情不好时看看这些
  • 如何结合Node和Puppeteer做网络爬虫
  • 广告中的CPM、CPC、CPA解释
  • 一份较为详细的深度学习资料汇总
  • 如何观看高清Youtube视频和高清视频的转帖方法
  • 最新QQ空间免费导航代码
  • 公安大数据平台建设项目
  • 关键词优化完整 “操作 “指南
  • 浅谈快表
  • 华为手机解锁码计算工具_华为手机强制解锁工具