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

java生成随机数的四种方法

方法一:Math.random()

Math.random() 方法返回的是一个介于 0.0(包含)和 1.0(不包含)之间的随机浮点数。

1、生成0.0到1.0之间的浮点数:double f= Math.random(); 

2、生成0.0到50.0之间的双精度浮点数:double randomDouble = Math.random() * 50; 

3、生成大写字母char ch=(char)(65 + (Math.random() * 26)) 

4、生成小写字母char ch=(char)(92 + (Math.random() * 26)) 

5、生成0-9的整数int n = (int) (Math.random() * 10);

6. 生成1到100之间的整数

public class IntegerExample {public static void main(String[] args) {int n = (int) (Math.random() * 100) + 1; // 生成1到100之间的随机整数System.out.println("随机范围整数: " + n);}
}

 

方法二:使用 java.util.Random  

1. 生成随机整数

import java.util.Random;public class RandomIntegerExample {public static void main(String[] args) {Random random = new Random();int n = random.nextInt(100); // 生成0到99之间的随机整数System.out.println("随机整数: " + n);}
}

2. 生成随机浮点数

import java.util.Random;public class RandomFloatExample {public static void main(String[] args) {Random random = new Random();float f = random.nextFloat(); // 生成0.0到1.0之间的随机浮点数System.out.println("随机浮点数: " + f);}
}

3. 生成随机布尔值

import java.util.Random;public class RandomBooleanExample {public static void main(String[] args) {Random random = new Random();boolean b = random.nextBoolean(); // 生成随机布尔值System.out.println("随机布尔值: " + b);}
}

4. 生成随机字节数组

import java.util.Random;public class RandomByteArrayExample {public static void main(String[] args) {Random random = new Random();byte[] byteArray = new byte[10]; // 指定数组长度为10random.nextBytes(byteArray); // 填充随机字节System.out.println("随机字节数组: " + java.util.Arrays.toString(byteArray));}
}

5. 生成随机双精度浮点数

生成一个随机的双精度浮点数,范围为 0.0(包含)到 1.0(不包含)。

import java.util.Random;public class RandomDouble {public static void main(String[] args) {Random random = new Random();double d= random.nextDouble(); // 生成0.0到1.0之间的随机双精度浮点数System.out.println("随机双精度浮点数: " + d);}
}

方法三:使用 ThreadLocalRandom

ThreadLocalRandom 类适用于多线程环境,能够提供更好的性能。

1、生成0到9之间的随机整数:

int randomInt = ThreadLocalRandom.current().nextInt(10); 

2、 生成0.0到1.0之间的随机浮点数

double randomFloat = ThreadLocalRandom.current().nextDouble();

3、 生成1到100之间的随机整数

int randomInt = ThreadLocalRandom.current().nextInt(1, 101);

4、生成0.0到50.0之间的随机双精度浮点数

double randomDouble = ThreadLocalRandom.current().nextDouble(0.0, 50.0);

5、模拟随机选择一个元素(从数组中选择)

import java.util.concurrent.ThreadLocalRandom;public class Example {public static void main(String[] args) {String[] items = {"苹果", "香蕉", "橙子", "梨", "桃"};int n = ThreadLocalRandom.current().nextInt(items.length); // 随机索引System.out.println("随机选择的水果: " + items[n]);}
}

方法四: 使用System.currentTimeMillis();

 currentTimeMillis()方法可以返回一个从1970年1月1号0点0分0秒到目前的一个毫秒数,返回类型是long,将其对一些数取模,就可以把数字限制在一个范围内

public class RandomFromMillis {public static void main(String[] args) {long c = System.currentTimeMillis(); // 获取当前时间的毫秒数int n = (int)(c % 100); // 生成0到99之间的随机整数System.out.println(n);}
}

例题

题目1:生成一个4个字符随机验证码,由大写、小写字母和数字组成

方法一:定义一个字符串存储所有数字和字储


public class yanzhengma {public static void main(String[] args) {System.out.print("字符随机验证码为:");String str="0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";int len=str.length();int n=0;for (int i = 0; i < 4; i++) {n=(int)(Math.random()*len);System.out.print(str.charAt(n));}}
}

方法二:先生成字母的ASCII码,再将十进制转换成字符

import java.util.Random;
public class homework4 {public static void main(String[] args) {String generatedString = generateRandomString(4);System.out.println("随机生成的字符: " + generatedString);}public static String generateRandomString(int length) {Random random = new Random();StringBuilder result = new StringBuilder(length);for (int i = 0; i < length; i++) {int n = random.nextInt(3); // 生成0-2的随机数if (n == 0) {// 生成0-9的数字result.append(random.nextInt(10));} else if (n == 1) {// 生成小写字母char lower = (char) ('a' + random.nextInt(26));result.append(lower);} else {// 生成大写字母char upper = (char) ('A' + random.nextInt(26));result.append(upper);}}return result.toString();}}

题目2:生成一个车牌号,车牌号由三个大写字母和四个数字组成

方法一:定义一个字符串存储所有字母

import java.util.Random;public class exercises_4_25 {public static void main(String[] args) {Random random = new Random();String letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";StringBuilder plate = new StringBuilder();// 生成三个大写字母for (int i = 0; i < 3; i++) {char letter = letters.charAt(random.nextInt(letters.length()));plate.append(letter);}// 生成四个数字for (int i = 0; i < 4; i++) {int digit = random.nextInt(10);plate.append(digit);}System.out.println("车牌号为: " + plate.toString());}
}

方法二:先生成大写字母的ASCII码,再将十进制转换成字符

public class exercises_4_25 {public static void letter() {int i=65+(int)(Math.random()*25);  //随机得到65——95的整数char ch=(char)i;System.out.print(ch);}public static void number() {int n=(int)(Math.random()*10);System.out.print(n);}public static void main(String[] args) {System.out.println("车牌号为:");for (int i = 0; i <3 ; i++) {letter();}for (int i = 0; i <4 ; i++) {number();}}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • wordpress主题摘要调用显示错误解决办法
  • docker镜像源
  • php curl发送get、post请求
  • NET WPF使用组件库HandyControl
  • 【推荐100个unity插件之34】在unity中实现和Live2D虚拟人物的交互——Cubism SDK for Unity
  • mac电脑命令行获取电量
  • oracle 如何查死锁
  • 软件测试之压力测试知识总结
  • Maven 的多种打jar包方式详细介绍、区别及使用教程——附使用命令
  • shell脚本语法
  • 硬件(驱动开发)
  • Python基础 | 在虚拟环境中安装并在指定文件夹中打开Jupyter notebook
  • Pycharm安装教程
  • CentOS 中配置 OpenJDK以及多版本管理
  • 计算机人工智能前沿进展-大语言模型方向-2024-09-13
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 【前端学习】-粗谈选择器
  • 【译】理解JavaScript:new 关键字
  • Angular2开发踩坑系列-生产环境编译
  • angular组件开发
  • Apache Zeppelin在Apache Trafodion上的可视化
  • HTML-表单
  • Intervention/image 图片处理扩展包的安装和使用
  • Java比较器对数组,集合排序
  • mysql_config not found
  • Object.assign方法不能实现深复制
  • vuex 笔记整理
  • webpack+react项目初体验——记录我的webpack环境配置
  • Zepto.js源码学习之二
  • 产品三维模型在线预览
  • 浮动相关
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 回顾 Swift 多平台移植进度 #2
  • 经典排序算法及其 Java 实现
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 巧用 TypeScript (一)
  • 深度学习中的信息论知识详解
  • 事件委托的小应用
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 新版博客前端前瞻
  • 用Canvas画一棵二叉树
  • 再谈express与koa的对比
  • ​必胜客礼品卡回收多少钱,回收平台哪家好
  • #git 撤消对文件的更改
  • #includecmath
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (31)对象的克隆
  • (Ruby)Ubuntu12.04安装Rails环境
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (六)DockerCompose安装与配置
  • (六)什么是Vite——热更新时vite、webpack做了什么