• 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
89 wizyt
pytanie zadane 14 października w JavaScript przez Admak Początkujący (320 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 Mądrala (6,510 p.)
wybrane 2 listopada 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 przez Admak Początkujący (320 p.)
Genialne! Dziękuje!
komentarz 14 października przez qax Mądrala (6,510 p.)

NIe ma za co smiley

komentarz 15 października przez VBService VIP (138,250 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 Szeryf (75,200 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,166 wizyt
0 głosów
1 odpowiedź 105 wizyt
pytanie zadane 11 stycznia 2020 w JavaScript przez Raivik Nowicjusz (150 p.)
0 głosów
7 odpowiedzi 1,250 wizyt

85,876 zapytań

134,650 odpowiedzi

298,919 komentarzy

56,744 pasjonatów

Advent of Code 2021

Top 15 użytkowników

  1. 1048p. - rucin93
  2. 1042p. - Whistleroosh
  3. 989p. - adrian17
  4. 984p. - Mikbac
  5. 982p. - Mateusz Bogdan
  6. 977p. - Michal Drewniak
  7. 967p. - nidomika
  8. 859p. - CC PL
  9. 854p. - Argeento
  10. 757p. - ScriptyChris
  11. 692p. - s. Dorota Kowalewska
  12. 683p. - tokox
  13. 660p. - Vinox
  14. 645p. - TheLukaszNs
  15. 628p. - WhiskeyTaster
Szczegóły i pełne wyniki

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.

...