import java.util.Random;
import java.util.Scanner;
public class Rand {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
System.out.println("Unesi broj elemenata niza: ");
int broj = reader.nextInt();
Random rand = new Random();
int[] niz = new int[broj];
for(int i =0; i < broj; i++)
{
int nasumicno = rand.nextInt(1000);
niz[i] = -1;
int provera;
do
{
provera = 0;
for(int j=0;j<i;j++)
{
if(nasumicno == niz[j])
{
provera = 1;
break;
}
}
if(provera == 1)
nasumicno = rand.nextInt(1000);
}while(provera == 1);
niz[i] = nasumicno;
System.out.println(niz[i]);
}
reader.close();
}
}
Generisanje random brojeva tako da svaki element niza bude razlicit
Odgovor: Generisanje random brojeva tako da svaki element niza bude razlicit
Nije lose da se oslonimo na zadatak sa časa i da napišemo funkciju koja iz već postojećeg niza životinja štampa 5 slučajno izabranih.
Pritom je potrebno sprečiti ponavljanje slučajno izabranih životinja.
Odgovor: Generisanje random brojeva tako da svaki element niza bude razlicit
To se moze resiti tako sto ce se umesto sledeceg if-a
if(nasumicno == niz[j])
{
provera = 1;
break;
}
stojati
if(niz[nasumicno].getClass().getName().equals(niz[j].getClass().getName())) {
provera = 1;
break;
}
i niz nece biti tipa int nego tipa Zivotinja
Re: Odgovor: Generisanje random brojeva tako da svaki element niza bude razlicit
public static void dajRandom(int[] niz, int broj) { // int[] se menja u koji god tip je potrebno
ArrayList<Integer> izabrane = new ArrayList<Integer>();
Random r = new Random();
Integer trenutni;
for(int i=0; i<broj; i++) {
do {
trenutni = r.nextInt(niz.length - 1);
} while(izabrane.contains(trenutni));
izabrane.add(trenutni);
}
for(int i:izabrane) {
System.out.println(i); // Poziva se koja god metoda treba da ispisuje informacije
}
}
Odgovor: Generisanje random brojeva tako da svaki element niza bude razlicit
import java.util.*;
import static java.lang.Math.min;
public class ListSample {
public static <T> List<T> Sample(List<T> source, int sampleSize){
List<T> copy = new ArrayList<T>(source);
Collections.shuffle(copy);
return copy.subList(0, min(copy.size(), sampleSize));
}
public static void main(String[] args) {
List<Integer> nekaLista = new ArrayList<Integer>();
for(int i=0; i<20;i++)
nekaLista.add(i);
System.out.println(nekaLista);
System.out.println(Sample(nekaLista, 5));
System.out.println(nekaLista);
}
}