用指定的位数Java生成一个随机整数

这个问题在这里已经有了答案:

  • 如何在Java中的特定范围内生成随机整数? 57个答案

  • private long generateRandomNumber(int n) {
        long min = (long) Math.pow(10, n - 1);
        return ThreadLocalRandom.current().nextLong(min, min * 10);
    }
    

    nextLong会在下限和上限之间生成随机数,因此使用参数(1_000, 10_000)调用它,例如结果数字为1000到9999.不幸的是,Old Random没有得到这些好的新功能。 但基本上没有理由继续使用它。


    public static int randomInt(int digits) {
        int minimum = (int) Math.pow(10, digits - 1); // minimum value with 2 digits is 10 (10^1)
        int maximum = (int) Math.pow(10, digits) - 1; // maximum value with 2 digits is 99 (10^2 - 1)
        Random random = new Random();
        return minimum + random.nextInt((maximum - minimum) + 1);
    }
    

    您可以简单地忽略不在所需范围内的数字。 这样,修改后的伪随机数生成器就可以保证它在随机生成一个给定范围内的数字:

    public class RandomOfDigits {
        public static void main(String[] args) {
            int nd = Integer.parseInt(args[0]);
            int loIn = (int) Math.pow(10, nd-1);
            int hiEx = (int) Math.pow(10, nd);
            Random r = new Random();
            int x;
            do {
                x = r.nextInt(hiEx);
            } while (x < loIn);
            System.out.println(x);
        }
    }
    
    链接地址: http://www.djcxy.com/p/17675.html

    上一篇: Generate a random integer with a specified number of digits Java

    下一篇: Generate random Double between