function wymieszaj() {
for (i = 0; i < losuj.length; i++) {
losuj[i] = Math.floor(Math.random() * 21);
j = i;
while (j >= 0) {
if (losuj[i] === losuj[j - 1] || losuj[i] === 0) {
losuj[i] = Math.floor(Math.random() * 21);
} else {
j--;
}
}
if (losuj[i] === 20) {
losuj[i] = 10;
} else if (losuj[i] > 10) {
losuj[i] = losuj[i].toString().charAt(1);
}
}
return losuj;
}
Cześć :)
Zadanie jest takie - losowo rozmieścić w tablicy 20-elementowej wartości od 1-10 z jednokrotnym powtórzeniem.
Zmagam się z tym problemem już od tygodnia, chciałem go rozwiązać sam, ale już nie mam pomysłu :P
Sprawdzałem działanie poniższej funkcji, wypisując losuj[i] na każdym etapie, i czasami reaguje na powtórzenie, a czasami nie. Przykładowo zwraca ona takie liczby:
7,8,5,7,1,8,7,1,6,7,2,10,9,3,4,5,5,8,8,1
9,4,2,10,6,2,8,4,10,7,8,6,1,6,5,1,5,8,7,7
2,3,6,7,1,5,2,1,5,9,4,8,8,4,4,6,4,10,5,9
Wymyśliłem, że zrobię to w ten sposób: wylosuję liczby od 1 do 20 bez powtórzeń, a następnie pozamieniam liczby większe od 10 na jej drugą cyfrę. Przykładowo 12=2. W ten sposób otrzymam liczby od 1 do 10 z pojedynczym powtórzeniem.
Proszę o pomoc w znalezieniu błędu :)
Pozdrawiam