[J2ME] losowanie bez powtórzeń

0

Witam,
Napisałem skrypt losujący bez powtórzeń, wszystko się ładnie kompiluje i uruchamia ale jak przechdoze do klasy gdzie to mam to emulator sie zacina, oto kod:

                
Random number = new Random();
int f, los = 1;
                for (int ej = 0; ej<10; ej++) {

                    f = number.nextInt(20);
                    // sprawdzanie powtorzen
                  
                    for (int fj = 0; fj<10; fj++) {
                        if (wylosowane[fj] == f) {
                          los = 0;
                        }
                        if (los > 0) {
                            wylosowane[ej] = f;
                        } else {
                            ej=ej-1;
                        }

                    }

                   
                }
0

napisalem jeszcze taki algorytm ale jest taka sama sytuacja jak wyzej

                Random number = new Random();


                int koniec1=0, koniec2=0, f, e, znal1=0, znal2=0, i1 = 0, i2 = 0;
                do {
                   e = number.nextInt(9);
                   for (int ej1 = 0; ej1<10; ej1++) {
                       if (e == wylosowanecyf[ej1]) { znal1=1; }
                   }
                   if (znal1 == 0) {
                       wylosowanecyf[i1] = e;
                       i1++;
                       if (i1 > 9) { koniec1 = 1; }
                   }

                } while (koniec1 != 1);

zauwazylem ze jak dam warunek zeby petla while sie wywolala z 3, 4 razy to sie wykonuje a jak 10 to stoi

0

nie przepisywalem :)

te klasy tez nie dzialaja, ten sam problem, tzn nie moge odpalac funkcji Math.random() musze robic jak wyzej, chyab chodzi o wydajnosc tego losowania

0

A Ty dalej tylko przepisujesz.

Random random = new Random();
int size = 20; 
int[] array = new int[size];
for(int i = 0 ; i < size; i++) array[i] = i; //w maszynie losującej jest 20 kul (od 0 do 19)
for(int i = size; i > 0; i--) { //następuje zwolnienie blokady
  int index = random.nextInt(i); //za pierwszym razem wybieramy 1 kulkę z 20
  System.out.println(array[index]); //robimy z nią co chcemy
  array[index] = array[i-1]; //i w jej miejsce umieszczamy ostatnią
} //bo następnym razem weźmiemy znów 1 kluję ale tym razem z 19
0

wielkie dzieki :)

0

a co jeśli nie działa pętla...?
"generics are not supported in source 1.3
use source 5 or higher to enable generics"

0

nie wiem jak to może działać skoro
random.nextInt(i) nie przyjmuje argumentu
musiało by być: random.nextInt()
ale jakoś nie widzę w tym sensu...

0

Witam,
mam pytanie, jak zapisać wylosowane liczby do strumienia, i po ponownym uruchomieniu aplikacji losować liczby, które nie zostały wylosowane.
CHciałbym napisać test na komórkę, który będzie można wznowić.

1 użytkowników online, w tym zalogowanych: 0, gości: 1