JAVA中生成随机数方法

(1)使用Math.random()。Math.random()随机地选取一个0~1之间的double类型小数,如果将其乘以一个数,比如100,就得到0~100之间的随机数值:

int randomNumber = (int) Math.round(Math.random()*(max-min)+min); 

(2)利用System类的currentTimeMillis()方法,这个方法返回从1970年1月1号0点0分0秒到当前的一个long型的毫秒 数,可作为一个随机数,还可以将其对某些数取模,就能限制随机数的范围;此方式在循环中同时产生多个随机数时,会是相同的值,有一定的局限性!

  long randomNum = System.currentTimeMillis();  int randomNumber = (int) randomNum%(max-min)+min; 

(3)Random类

Random类中实现的随机算法时伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。(种子数只是随机算法的起源数字,和生成的随机数字的区间无关)。

Random类包含两个构造方法:

1) public Random()

该构造方法使用和当前系统时间有关的数字作为种子数,然后使用这个种子数构造Random对象。实际上Math.Random()内部也是利用这个构造方法来创建随机数(细节可查看源码)。

Random r=new Random()

2)public Random(long seed)

使用指定的种子数seed创建Random对象,如果种子数相同,生成的随机数也会相同。

Random r=new Random(1000)

主要方法:

public boolean nextBoolean()

生成一个随机的boolean值,生成true和false的几率相等。

public double nextDouble()

生成一个随机的double值,数值介于[0,1]之间。

public int nextInt()

生成一个随机的int值,该值介于int类型整数范围之内。

public int nextInt(int n)

生成一个随机的int值,该值介于[0,n)之间。

public void setSeed(long seed)

重新设置Random对象中的种子数。设置完种子数以后的random对象和相同种子数的使用new关键字创建出的Random对象相同。

生成指定范围内的随机数方法:

 //1.直接两重循环去重public static int [] randomCommon(int min,int max,int n){if(n>(max-min+1)||max<min){return null;}int [] result=new int[n];int count=0;while(count<n){int num=  (int) (Math.random()*(max-min) +min);boolean flag=true;for(int j=0;j<n;j++){if(num==result[j]){flag=false;break;}}if(flag){result[count]=num;count++;} }return result;}   //2.排除已经随机的数public static  int [] randomArray(int min,int max,int n){int len=max-min+1;if(max<min || n>len){return null;}//初始化给定范围的待选数组int [] seq=new int[len];for(int i=min;i<min+len;i++){//初始时seq数组存储 min~max的所有数seq[i-min]=i;     //i: len-1}int [] result=new int[n];Random rand=new Random();for(int i=0;i<result.length;i++){int  index=rand.nextInt(len); //生成随机下标,范围是0~lenresult[i]=seq[index];      seq[index]=seq[len-1];  len--;}return result;}

JAVA 随机数生成方式相关推荐

  1. java随机数转换_Java获取随机数的3种方法(转)

    随机数在实际中使用很广泛,比如要随即生成一个固定长度的字符串.数字.或者随即生成一个不定长度的数字.或者进行一个模拟的随机选择等等.Java提供了最基本的工具,可以帮助开发者来实现这一切. 一.Jav ...

  2. java 随机数 【指定范围】

    在Java中我们可以使用java.util.Random类来产生一个随机数发生器.它有两种形式的构造函数,分别是Random()和Random(long seed).Random()使用当前时间即Sy ...

  3. (转)Java随机数

    1 随机数的三种产生方式 本章先讲解Java随机数的几种产生方式,然后通过示例对其进行演示. 广义上讲,Java中的随机数的有三种产生方式: (01). 通过System.currentTimeMil ...

  4. java随机数_Java随机

    java随机数 Java Random class is used to generate a series of random numbers. Java Random类用于生成一系列随机数. Ja ...

  5. 硬核 - Java 随机数相关 API 的演进与思考(上)

    本系列将 Java 17 之前的随机数 API 以及 Java 17 之后的统一 API 都做了比较详细的说明,并且将随机数的特性以及实现思路也做了一些简单的分析,帮助大家明白为何会有这么多的随机数算 ...

  6. java随机数代码解析,实例解析常用的java随机数生成办法

    随机数是任何一种编程语言最基本的特征之一,在技术开发中应用很广泛,因为有时我们需要随机生成一个固定长度的数字.字符串亦或者是需要随机生成一个不定长度的数字.或者进行一个模拟的随机选择等.Java就为我 ...

  7. java random产生随机数_java的三种随机数生成方式,必掌握

    随机数的产生在一些代码中很常用,也是我们必须要掌握的.而java中产生随机数的方法主要有三种: 第一种:new Random() 第二种:Math.random() 第三种:currentTimeMi ...

  8. java int随机数_java的三种随机数生成方式

    随机数的产生在一些代码中很常用,也是我们必须要掌握的.而java中产生随机数的方法主要有三种: 第一种:new Random() 第二种:Math.random() 第三种:currentTimeMi ...

  9. java随机数 时间_Java 随机数

    在 Java 编程时,经常需要用到随机数,如生成验证码.密码加密.游戏道具随机掉落等,那么在 Java 语言中如何生成随机数? Java 语言中有两种方法可能生成随机数 方法一:Math.random ...

最新文章

  1. java常见的异常类型_Java几种常见的异常类型
  2. java基础系列:集合基础(1)
  3. ITK:在图像中找到最大和最小
  4. 【离散数学】含有两个量词的谓词逻辑公式
  5. react跳转到网络异常页面_React错误边界处理
  6. physx选择显卡还是cpu_99块钱买啥显卡?PUBG吃鸡60fps+的缩水版“GTX1050”3GB游戏实测...
  7. logging 模块 与 logging 固定模块
  8. MikroTik RouterOS 6.x版本开始支持使用img镜像安装(U盘安装的终极解决方法)
  9. Prescan(七):prescan中air传感器的配置
  10. 使用GridView的auto_fit遇到的坑
  11. [渝粤教育] 新乡医学院 医学微生物学 参考 资料
  12. C语言关系运算符计算题,【单选题】下列运算符中是C语言关系运算符的是().
  13. 极验滑块验证码破解最新版
  14. 《英语口语900句 (624页+360分钟录音)》(Oral English 900 Expressions)
  15. 「可口可乐 + Zion」7天上线小程序是如何做到的?
  16. 自习室的泡利不相容定律(C语言实现)
  17. 洞见未来|电力可视化运营大脑——Wyn BI数据可视化建设方案
  18. Node.js.不要堵塞线程(一)
  19. 科学-建筑学-建筑美学:建筑美学百科
  20. UGREEN 绿联 USB 2.0转串口DB9 打印线 驱动安装教程

热门文章

  1. Spring boot短信验证登录
  2. Vue 自定义音乐播放器组件为H5添加背景音乐
  3. 无线传感器网络体系结构
  4. ESP32 FreeRTOS-调试任务实用工具(4)
  5. 现代远程教育入学指南(石油大学)--入学篇---在线考试
  6. 【NOIP2013初赛】整除
  7. DRF 自动生成接口文档
  8. c语言联想输入法算法,华为:编程实现联想输入法 输入联想功能是非常实用的一个功能,请编程实现类似功能...
  9. linux freemodbus tcp,FreeModbus LINUXTCP Compile ERROR
  10. 现代数学的基本概念:数学是一门研究数量、结构、变化以及空间等基本概念和方法的学科,数学的本质在于研究数学对象之间的关系。