如何防止重叠的随机数

Mar*_*Liu 5 java random

我如何防止从随机数重复数字.我需要在1到9之间生成5个不同的数字.我经常会得到像23334这样的数字,我该如何防止?任何帮助都会很棒!

    int num2 = (int) Math.round((Math.random()*9) +1);
    int num1 = (int) Math.round((Math.random()*9) +1);
    int num5 = (int) Math.round((Math.random()*9) +1);
    int num3 = (int) Math.round((Math.random()*9) +1);
    int num4 = (int) Math.round((Math.random()*9) +1);
Run Code Online (Sandbox Code Playgroud)

Phu*_*yen 8

一种选择是使用shuffle算法(例如Fisher-Yates shuffle)生成从1到9的随机序列,然后获取序列的前5个数字

有关StackOverflow的进一步说明:https://stackoverflow.com/a/196065/950427


Sta*_*avL 6

Set<Integer> set=new HashSet<>();
while (set.size()<5) {
    set.add( Math.round((Math.random()*9) +1));
}
Run Code Online (Sandbox Code Playgroud)

设置完成后,您有5个唯一的随机数.

更新:只是为了说明Jared Burrows的评论

  • 需要爱无限时间最坏情况复杂的解决方案:) (3认同)