Autor Zpráva
Dartin
Profil *
Ahoj,

prosím, lze nějakým způsobem vygenerovat řadu 4 čísel z rozmezí 1-9 tak, aby byla všechna jedinečná?

Vím, že 1 číslo můžu vygenerovat takto:
var cislo = Math.floor((Math.random() * 9) + 1);

A pro 4 čísla to můžu ještě 3x zopakovat. Ale problém je, že se čísla budou občas opakovat.
Jak tedy ošetřit jedinečnost?

Děkuji za pomoc,
D.
anonym_
Profil *
Dartin:
Pamatuj si, která čísla jsi už generoval a v případě jejich znovuvygenerovani pokus opakuj.
Dartin
Profil *
Mohl bys byt prosim trosku konkretnejsi?
Predpokladam, ze to bude nejak pres while, ale JS neni moje domena. :-)
RastyAmateur
Profil
Dartin:
Další možnost bez while cyklu je tato: Udělej si pole čísel od 1 do 9 a pak jej zamíchej. Na závěr si vytáhni první 4 čísla.

Jak udělat pole čísel od 1 do devíti?
Jak zamíchat pole?
Dartin
Profil *
Tak nakonec jsem to zbastlil takto. Zda se, ze to funguje...

 
var cisla = [];
while (cisla.length < 4) {
  var cislo = Math.floor(Math.random() * 9) + 1;
  if (cisla.indexOf(cislo) == -1) {
    cisla.push(cislo);
    }
  }
  
Taps
Profil
Zobrazení náhodného čísla

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0