What I am trying to do is generate random number but no repetition i'm coding above is it correct?
public static void main(String[] args) {
ArrayList<Integer> arrayLast = new ArrayList<Integer>();
for (int arrayitems : getArray(10, 100)) {
arrayLast.add(arrayitems);
}
}
public static ArrayList<Integer> getArray(int arraysize, int range){
ArrayList<Integer> array = new ArrayList<Integer>();
ArrayList<Integer> arraybase = new ArrayList<Integer>();
Random rnd = new Random();
for (int i = 1; i <= range; i++) {
arraybase.add(new Integer(i));
}
int k =0;
for (int j = 0; j < arraysize; j++) {
if(range>arraysize) {
int sayi = rnd.nextInt(range-arraysize);
array.add(arraybase.get(sayi));
arraybase.remove(sayi);
}
else {
int sayi = rnd.nextInt(arraysize-k);
array.add(arraybase.get(sayi));
arraybase.remove(sayi);
k++;
}
}
Collections.shuffle(array);
return array;
}
Using Stream API in Java 8+, you can generate n
distinct integers with a range from origin
(inclusive) to bound
(exclusive) by using this method:
public static List<Integer> randomInts(int n, int origin, int bound) {
return ThreadLocalRandom.current().ints(origin, bound)
.distinct()
.limit(n)
.collect(ArrayList::new, ArrayList::add, ArrayList::addAll);
}
Example:
// generate 15 distinct random numbers greater than or equal to 10 and less than 90
List<Integer> randoms = randomInts(15, 10, 90);