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之间的整数

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]; // 指定数组长度为10
        random.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();
    }

  }
}
相关推荐
武子康9 分钟前
大数据-230 离线数仓 - ODS层的构建 Hive处理 UDF 与 SerDe 处理 与 当前总结
java·大数据·数据仓库·hive·hadoop·sql·hdfs
武子康11 分钟前
大数据-231 离线数仓 - DWS 层、ADS 层的创建 Hive 执行脚本
java·大数据·数据仓库·hive·hadoop·mysql
苏-言18 分钟前
Spring IOC实战指南:从零到一的构建过程
java·数据库·spring
界面开发小八哥25 分钟前
更高效的Java 23开发,IntelliJ IDEA助力全面升级
java·开发语言·ide·intellij-idea·开发工具
草莓base38 分钟前
【手写一个spring】spring源码的简单实现--容器启动
java·后端·spring
jiao_mrswang1 小时前
leetcode-18-四数之和
算法·leetcode·职场和发展
Allen Bright1 小时前
maven概述
java·maven
qystca1 小时前
洛谷 B3637 最长上升子序列 C语言 记忆化搜索->‘正序‘dp
c语言·开发语言·算法
编程重生之路1 小时前
Springboot启动异常 错误: 找不到或无法加载主类 xxx.Application异常
java·spring boot·后端
薯条不要番茄酱1 小时前
数据结构-8.Java. 七大排序算法(中篇)
java·开发语言·数据结构·后端·算法·排序算法·intellij-idea