首页 > 编程语言 >java生成随机数的四种方法

java生成随机数的四种方法

时间:2024-09-18 23:51:35浏览次数:3  
标签:Random java int random 生成 随机 随机数 public 四种

方法一: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);

方法二:使用 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]; // 指定数组长度为10
        random.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 类适用于多线程环境,能够提供更好的性能。

import java.util.concurrent.ThreadLocalRandom;

public class ThreadLocalRandomExample {
    public static void main(String[] args) {
        // 生成一个0到9之间的随机整数
        int n = ThreadLocalRandom.current().nextInt(10);
        System.out.println("随机整数: " + n);
    }
}

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

String[] items = {"苹果", "香蕉", "橙子", "梨", "桃"};

int Index = ThreadLocalRandom.current().nextInt(items.length); 

方法四: 使用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();
    }

  }
}


标签:Random,java,int,random,生成,随机,随机数,public,四种
From: https://blog.csdn.net/2301_80386162/article/details/142339283

相关文章

  • 《深入理解 Java 线程池:高效管理线程的利器》
    线程池1.什么是线程池?​线程池内部维护了若干个线程,没有任务的时候,这些线程都处于等待空闲状态。如果有新的线程任务,就分配一个空闲线程执行。如果所有线程都处于忙碌状态,线程池会创建一个新线程进行处理或者放入队列(工作队列)中等待。2.线程池常用类和接口​在Java标......
  • java基础 -IO流笔记
    610,文件的基础知识文件流 输入流和输出流都是相对java程序内存而言 611,创建文件 在D盘下创建文件。packagecom.hspedu.file;importorg.junit.jupiter.api.Test;importjava.io.File;importjava.io.IOException;//演示创建文件publicclassFileCreate{......
  • MySQL 触发器的创建、使用及在 Java 中的调用
    在数据库管理中,MySQL的触发器是一种强大的工具,它可以在特定的数据库事件发生时自动执行一系列操作。同时,我们还可以在Java应用程序中与这些触发器进行交互,实现更复杂的业务逻辑。今天,我们就来一起探讨如何在MySQL中创建和使用触发器,并在Java中调用它们。一、MySQL中创建和......
  • 模拟创建分类.java
    Category.javapublicclassCategory{privateLongid;privateStringname;privateintpostCount;publicCategory(){}publicCategory(Stringname){this.name=name;}publicCategory(Stringname,intpostC......
  • Java-数据结构-优先级队列(堆)-(一) (;´д`)ゞ
    文本目录:❄️一、优先级队列:     ➷1、概念:❄️二、优先级队列的模拟实现:     ➷1、堆的概念:     ➷ 2、堆的性质:      ➷ 3、堆的创建: ▶向下调整:       ➷ 4、堆的插入和删除:    ▶堆的插入: ☞......
  • Java大小端转换 Java大端转小端 Java小端转大端
    Java大小端转换Java大端转小端Java小端转大端写在前面Java字节转大端整数Java整数转大端字节Java数组转小端整数Java大小端转换提醒写在前面一段内存地址的两边分为高位和低位,就像鸡蛋的两边,大的一端称为大端,小的一段称为小端。在内存地址的高位存储内存的低地址......
  • java-基于springboot实现家教管理系统
    摘要传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装家教管理系统软件来发挥其高效地信息处理的作用,可以规范信息管理流程,让管理工作可以系统化和程序化,同时,家教管理系统的有效运......
  • JavaScript语法入门七 数据类型
     BigInt类型在JavaScript中,“number”类型无法代表大于 253(或小于 -253)的整数。此时可以使用BigInt类型。使用方法:在数字的尾部附加一个n。constbigInttest=12345678901234567890123456789012345678901121345526789n; String类型js中只有String类型没有char类型。定义时......
  • 【面试经验】2024年9月滴滴后端笔试 java
    比较简单,两题编程。选择题好像是20题,有部分不确定,有C++的几题。题目记不清了,凭印象写一下。编程题第一题充电第一题:n个玩具,m电量,尽可能让一个大的区间内的玩具的电量充满。输出充满电的玩具个数。双指针+滑动窗口。importjava.util.Scanner;publicclassMa......
  • 1. 如何在Java中连接MySQL数据库?请解释使用JDBC连接的步骤。
    要在Java中连接MySQL数据库,通常使用JDBC(JavaDatabaseConnectivity)API。这是一个用于执行SQL语句的JavaAPI,可以用来访问关系型数据库。下面是使用JDBC连接MySQL数据库的详细步骤:1.添加MySQLJDBC驱动首先,需要确保项目中包含MySQL的JDBC驱动程序。这个驱动程序通常是一个......