FORUM - Pitanja i odgovori

Generisanje random brojeva tako da svaki element niza bude razlicit

Generisanje random brojeva tako da svaki element niza bude razlicit

napisao/la Dusan Gogic -
Broj odgovora: 4




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();
    }
}

U odgovoru na Dusan Gogic

Odgovor: Generisanje random brojeva tako da svaki element niza bude razlicit

napisao/la Marina Svicevic -

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.

U odgovoru na Marina Svicevic

Odgovor: Generisanje random brojeva tako da svaki element niza bude razlicit

napisao/la Dusan Gogic -

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

U odgovoru na Marina Svicevic

Re: Odgovor: Generisanje random brojeva tako da svaki element niza bude razlicit

napisao/la Ognjen Orlovic -
Trebalo bi da radi posao. Napravio za niz int-ova ali je totalno nebitno, napisao komentar sta se menja za bilo koju drugu klasu.

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

}

}

U odgovoru na Dusan Gogic

Odgovor: Generisanje random brojeva tako da svaki element niza bude razlicit

napisao/la Danijel Andjelkovic -

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);

}

}