• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wylosowanie 100 liczb które się nie powtarzają

+1 głos
77 wizyt
pytanie zadane 14 października w JavaScript przez Admak Początkujący (290 p.)
edycja 14 października przez Admak
var myArray = [];
min = 1;
max = 99;

    
        for (i=0; i<=100; i++) 
        {
            min = Math.ceil(min);
            max = Math.floor(max);
            x = Math.floor(Math.random() * (max - min)) + min;
            if(myArray.includes(x))
            {
                while(true) //wykonuj dopóki myArray.includes(x) = true
                {
                    x =  Math.floor(Math.random() * (max - min)) + min;
                }
                myArray.push(x);
           }
                else //jeżeli nie ciąg nie zawiera liczby wylosowanej 
                {
                    myArray.push(x);
                }
            }

                
        }
    
     

    console.log(myArray);

Kod ma na celu wypisanie 100 losowych liczb, które nie będą się powtarzać, jednak kiedy odpalam program w przeglądarce to się wysypuje.

2 odpowiedzi

+2 głosów
odpowiedź 14 października przez qax Gaduła (4,230 p.)

A może prościej stworzyć tablicę dowolnych liczb, a następnie ją potasować? Na przykład mając tablicę 10 liczb (którą możesz stworzyć za pomocą odpowiedniej pętli czy jak tam wolisz), a następnie wykonać na niej funkcję:

var numArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var ranNums = shuffle(numArray);
console.log(ranNums);

Funkcja shuffle():

function shuffle(array) {
   var i = array.length, j = 0, temp;
   while (i--) {
      j = Math.floor(Math.random() * (i+1));
      temp = array[i];
      array[i] = array[j];
      array[j] = temp;
   }
   return array;
}

 

komentarz 14 października przez Admak Początkujący (290 p.)
Genialne! Dziękuje!
komentarz 14 października przez qax Gaduła (4,230 p.)

NIe ma za co smiley

komentarz 15 października przez VBService VIP (129,150 p.)

Propozycja z: Array.from i Array.sort

propozycja

const myArray = fillArrayInRange(1,99);
shuffleArray(myArray);
console.log(myArray);

function fillArrayInRange(min, max, step=1) {
  return Array.from({length: (max - min) / step + 1}, (_, i) => min + (i * step)); 
}
function shuffleArray(array) {
  array.sort(() => Math.random() - 0.5);
}

 

0 głosów
odpowiedź 14 października przez radek024 Maniak (74,980 p.)
Skąd pobierasz zmienną x? Dlaczego pętla jest zawsze prawdziwa? Do czego służy else wewnątrz ifa? Przecież to część warunku, a nie wolna instrukcja. Przeanalizuj dokładnie, krok po kroku co wykonuje ten kod.

Podobne pytania

0 głosów
1 odpowiedź 3,073 wizyt
0 głosów
1 odpowiedź 101 wizyt
pytanie zadane 11 stycznia 2020 w JavaScript przez Raivik Nowicjusz (150 p.)
0 głosów
7 odpowiedzi 1,209 wizyt
Porady nie od parady
Forum posiada swój własny serwer Discord, dzięki któremu będziesz mógł po prostu pogadać z innymi Pasjonatami lub zapytać o jakiś problem. Podstrona z chatem znajduje się w menu pod ikoną człowieka w dymku.IRC

85,253 zapytań

134,062 odpowiedzi

297,274 komentarzy

56,338 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...