java生成指定区间的随机数

随机数

random : 生成一个大于或等于0.0且小于1.0的随机数,即[0.0,1.0);
生成[a,b]区间的随机数---(int)(Math.round()*(b-a+1))+a;

例:编写程序随机生成k个位于[m,n]区间的整数,对这k个数据进行升序排序并输出。

import java.util.Scanner;
import java.util.Random;
import java.util.Arrays;

public class Main {
    
    
    public static void main(String[] args) {
    
    
        Scanner input = new Scanner(System.in);
        Random random = new Random();
        System.out.print("请输入整数m和n以及生成的随机数的个数k:");
        int m = input.nextInt();
        int n = input.nextInt();
        int k = input.nextInt();
        int[] nums = new int[k];
        for (int i = 0; i < k; i++) {
    
    
            nums[i] = random.nextInt(n - m + 1) + m; //生成[m,n]区间内的随机整数
        }
        Arrays.sort(nums); //对随机数升序排序
        System.out.println("随机生成的" + k + "个位于[" + m + "," + n + "]区间的整数为:");
        for (int i = 0; i < k; i++) {
    
    
            System.out.print(nums[i] + " ");
        }
    }
}

在这里插入图片描述

在使用Java生成随机数的时候,有一些注意事项需要注意,下面是一些常见的问题和解决方案:

1. 生成随机数时,应该使用Java的 Random 类,而不是 Math.random() 方法。原因是,Math.random() 方法实际上是通过调用 Random 类实现的,但是 Random 类可以更好地控制随机数的生成方式。

2. Random 类提供了多种随机数生成方法,如 nextInt()nextDouble()nextBoolean() 等,用户可以根据需要选择。但是需要注意的是,当使用 nextInt() 方法时,必须指定生成的随机数范围,否则将生成负数。例如,要生成大于等于0且小于10的随机整数,可以使用以下代码:

Random random = new Random();
int num = random.nextInt(10);

3. 如果需要生成连续随机数或者在一定范围内生成随机数,可以使用 IntStreamLongStream 类的 range()rangeClosed() 方法。

// 生成0~9之间的随机整数
int num1 = (int) (Math.random() * 10);
int num2 = new Random().nextInt(10);
int num3 = ThreadLocalRandom.current().nextInt(10);
int num4 = IntStream.range(0, 10).parallel().boxed().findAny().get();

4. 在实际应用中,如果需要保证生成的随机数是安全的、随机性好的、不可预测的,可以使用 SecureRandom 类来生成随机数。

// 生成安全随机数
SecureRandom secureRandom = new SecureRandom();
byte[] bytes = new byte[16];
secureRandom.nextBytes(bytes);

总之,在使用Java生成随机数的时候,我们要注意选择合适的随机数生成方法,保证生成的随机数是符合要求的。

猜你喜欢

转载自blog.csdn.net/YouWan797411/article/details/130852353