java中如何生成四个数的唯一随机序列

xwmevbvl  于 2021-07-06  发布在  Java
关注(0)|答案(3)|浏览(479)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

上个月关门了。
改进这个问题
我一直在试图找出如何用java编写代码来生成唯一的数字序列,如下所示:**
0012 3929 2003 2201 3994等。。。
55562 23369 66665 77742 15489等。。。
556612 211135 222566 333365等。。。
所有可能的数字都按四个或五个以上的数字块的顺序排列。。。

kgqe7b3p

kgqe7b3p1#

我认为这会对您有所帮助,您可以通过添加更多函数来更改代码,方法是使用用户输入更改for循环。

import java.util.Random;

public class RandomNum {
    public static void main(String[] args) {
        Random random = new Random();

        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 4; j++) {
                System.out.print(random.nextInt(10));
            }
            System.out.print(" ");
        }
    }
}

祝你好运!

weylhg0b

weylhg0b2#

我的解决方案是将序列视为字符串,因为它可能不适合int或long。

public static void main(String[] args) {
    System.out.println(randomNumbersInNBlocks(4,4));
    System.out.println(randomNumbersInNBlocks(4,6));
    System.out.println(randomNumbersInNBlocks(6,4));
    System.out.println(randomNumbersInNBlocks(6,6));
}

private static String randomNumbersInNBlocks(int numbersInBlock, int blockCount){
    final String ALPHA_NUMERIC_STRING = "0123456789";
    StringBuilder builder = new StringBuilder();
    for (int i = 0; i < blockCount; i++) {
        String numbers;
        do{
            numbers = getRandomNumbers(numbersInBlock);
        }while (builder.toString().contains(numbers));
        builder.append(numbers);
        builder.append(" ");
    }

    return builder.deleteCharAt(builder.length() -1).toString();
}

private static String getRandomNumbers(int numberCount){
    final String ALPHA_NUMERIC_STRING = "0123456789";
    StringBuilder builder = new StringBuilder();
    while (numberCount-- != 0) {
        int character = (int)(Math.random()*ALPHA_NUMERIC_STRING.length());
        builder.append(ALPHA_NUMERIC_STRING.charAt(character));
    }
    return builder.toString();
}
3zwtqj6y

3zwtqj6y3#

尝试在这里解析您的问题:给定输入“4”,您希望以随机顺序生成0000到9999之间的所有可能数字(即10000个数字)?
一种方法是首先创建集合中的所有数字,然后将其洗牌:

var list = IntStream.of(0, 10000)
  .mapToObj(n -> String.format("%04d", n))
  .collect(Collectors.toList());
Collections.shuffle(list);

或者,如果“最低”的数字是1000,那么,把0改成1000,效果也一样。
你可以为任何输入这样做,但一旦你到了8左右,它开始变得笨拙;那需要很多记忆。
有办法做到这一点,但它变得相当复杂;想必以上这些对你来说已经足够了。

相关问题