随机数
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. 如果需要生成连续随机数或者在一定范围内生成随机数,可以使用 IntStream
或 LongStream
类的 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生成随机数的时候,我们要注意选择合适的随机数生成方法,保证生成的随机数是符合要求的。
来源地址:https://blog.csdn.net/YouWan797411/article/details/130852353