java生成随机数的四种方法

ops/2024/9/23 10:45:10/

方法一: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之间的整数

java">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. 生成随机整数

java">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. 生成随机浮点数

java">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. 生成随机布尔值

java">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. 生成随机字节数组

java">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(不包含)。

java">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、模拟随机选择一个元素(从数组中选择)

java">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,将其对一些数取模,就可以把数字限制在一个范围内

java">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个字符随机验证码,由大写、小写字母和数字组成

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

java">
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码,再将十进制转换成字符

java">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:生成一个车牌号,车牌号由三个大写字母和四个数字组成

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

java">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码,再将十进制转换成字符

java">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();}}
}


http://www.ppmy.cn/ops/113161.html

相关文章

如何在ONLYOFFICE文档中,将新插件添加为选项卡

随着 ONLYOFFICE 文档8.1版本的推出&#xff0c;我们引入了各式各样的功能&#xff0c;旨在增强软件功能性和优化用户体验。其中一项改进是&#xff0c;插件可以显示在一个独立的选项卡中了。在本博客文章中&#xff0c;我们将带您了解充分利用这一新功能的各项步骤。 关于 ONL…

Java设计原则

面向对象经典设计原则主要包括单一职责原则、开放封闭原则、里氏替换原则、依赖倒置原则、接口隔离原则&#xff0c;文本主要从JAVA面向对象程序设计语言类的基本特性&#xff08;封装、继承、多态&#xff09;、JDK的API设计三个方面描述这些原则的基本原理。 单一职责原则 …

系统架构设计师教程 第5章 5.3 系统分析与设计 笔记

5.3 系统分析与设计 系统分析阶段把复杂的对象分解为简单的组成部分&#xff0c;其基本任务是在充分了解用户需求的基础上&#xff0c;书写系统需求规格说明书。 系统设计是根据系统分析的结果&#xff0c;完成系统的构建过程。其主要目的是绘制系统的蓝图&#xff0c;权衡和比…

总结拓展十:SAP开发计划(下)

第一节 接口功能开发说明书设计 1、软件系统接口作用 答&#xff1a;系统接口&#xff0c;是实现系统间数据传输的功能。 2、软件系统接口特点 1&#xff09;采用Web Service技术作为平台&#xff0c;有众多的数据传输协议标准&#xff0c;通过API与外界交流数据。 2&…

前端 Vue.js + 后端 Flask/Django 完美结合:教你打造高效全栈应用的秘诀!

Vue.js 与 Flask/Django 后端配合详解 我们在做全栈开发时&#xff0c;经常会遇到前后端分离的需求。而 Vue.js 作为一款轻量级、灵活的前端框架&#xff0c;结合 Flask 或 Django 这类后端框架&#xff0c;可以帮助我们快速搭建现代 Web 应用。今天我就从零开始&#xff0c;带…

表格HTML

//test.html <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>表格与CSS分开示例</tit…

AJAX 入门 day1

目录 1.AJAX 概念和 axios 使用 2.认识 URL 3.URL 查询参数 4.常用请求方法和数据提交 5.HTTP协议-报文 5.1 HTTP 协议&#xff0d;请求报文 5.2 HTTP 协议&#xff0d;响应报文 6.接口文档 7.案例 - 用户登录 8.form-serialize 插件 1.AJAX 概念和 axios 使用 “Aj…

flume系列之:出现数据堆积时临时增大sink端消费能力

flume系列之:出现数据堆积时临时增大sink端消费能力 一、背景二、增大sink端消费能力flume系列之:flume生产环境sink重要参数理解 一、背景 flume出现数据堆积,消费的数据持续堆积在channel中参数org_apache_flume_channel_channel1_channelfillpercentage的值大于0,并且持…