• 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
148 wizyt
pytanie zadane 14 października 2021 w JavaScript przez Admak Początkujący (340 p.)
edycja 14 października 2021 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 2021 przez qax Dyskutant (8,040 p.)
wybrane 2 listopada 2021 przez Admak
 
Najlepsza

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 2021 przez Admak Początkujący (340 p.)
Genialne! Dziękuje!
komentarz 14 października 2021 przez qax Dyskutant (8,040 p.)

NIe ma za co smiley

komentarz 15 października 2021 przez VBService Mędrzec (179,090 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 2021 przez radek024 Szeryf (76,480 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,590 wizyt
0 głosów
1 odpowiedź 121 wizyt
pytanie zadane 11 stycznia 2020 w JavaScript przez Raivik Nowicjusz (150 p.)
0 głosów
7 odpowiedzi 1,395 wizyt

88,686 zapytań

137,299 odpowiedzi

306,685 komentarzy

58,876 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

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

...