首页 > 解决方案 > 在Java中生成任意长度的任意随机数

问题描述

如何在 Java 中生成任意长度的任意随机数?比如,要生成一个宽度为 3 的数字,它应该在 100 到 999 之间。那么如何编码呢?
在下图中: 我想解决第二个问题。 这是我为第一个问题写的:
描述

public int getRandomNumberReturntypediff(int min,int max) {
    Random rand = new Random();

    int  n = rand.nextInt(1000) + 1;
    Integer.toString(n);

    System.out.println("get Random Number with return type STRING" + n);
    return n;
}

假设我接受参数length并返回String。我怎样才能做到这一点?

标签: java

解决方案


由于您的问题中已经有了实际的有界随机数生成逻辑,因此我假设您正在努力计算边界。

您可以使用 10 的幂来计算最小值和最大值:

  • 最小值 = 10 ^(长度 - 1)
  • 最大值 = (10 ^ 长度) - 1

因此,例如,对于长度为 3 的数字,这将为您提供最小值 100 和最大值 999。

这是一个完整的例子:

import java.util.Random;

public class Randoms {
    public static void main(String args[]) {
        System.out.println(generateRandom(3));
    }

    private static String generateRandom(int length) {
        int min = (int) Math.pow(10, length - 1);
        int max = (int) Math.pow(10, length); // bound is exclusive

        Random random = new Random();

        return Integer.toString(random.nextInt(max - min) + min);
    }
}

推荐阅读