如何做一个随机而独特的发电机?

jav*_*ava 4 java arrays random

我已经写了一个随机生成器,它接受参数a和b,其中a是最小值,b是最大值,就像这个randomGenerator(int a,int b)

我接下来要做的是:使用循环,然后从a到b生成唯一的数字.例:

I want to have 8 unique numbers,
int a = 1;
int b = 10;
int value;
Run Code Online (Sandbox Code Playgroud)

如果我执行循环,则会有一个高%,相同的数字将出现多次.知道怎么做吗?

我自己的方式是:

while(int i <= 8){
  randomGenerator(a,b);
  // if value is not in array, then insert into array
}
Run Code Online (Sandbox Code Playgroud)

我被困在评论部分.有没有办法检查数组中是否存在变量?

编辑,基于nailxx的答案,我的理解是:

  • 从a到b取列表(如果按照我的例子,1 - 10)

  • "洗牌"它

  • 拿前8项.你是这个意思吗?

在java世界中,是否有"shuffle"功能或者我需要创建自己的功能?

nkr*_*rkv 9

采取与从依次分布单元的明细表ab,洗牌它并与每个请求后续索引返回元件.