我如何防止从随机数重复数字.我需要在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)
一种选择是使用shuffle算法(例如Fisher-Yates shuffle)生成从1到9的随机序列,然后获取序列的前5个数字
有关StackOverflow的进一步说明:https://stackoverflow.com/a/196065/950427
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的评论