[JS] 10 verschillende random nummers genereren

Pagina: 1
Acties:
  • 191 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

  • Charango
  • Registratie: Juni 2001
  • Laatst online: 27-04 23:32
Ik heb een twintigtal foto's, waarvan ik er willekeurig tien op mijn site wil laten zien.

Weet iemand een nette manier om met javascript tien (quasi-random) verschillende gehele getallen tussen 0 en 20 te genereren?

Ideaal zou zijn als deze ook nog afhankelijk zijn van de dag, zodat elke dag een andere selectie gemaakt wordt.

Acties:
  • 0 Henk 'm!

  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

Random afgerond getal in een array gooien en dan eerst controleren of ie er al niet instaat. Zoiets zou ik proberen.

Misschien dat het zelfs wel makkelijker kan...

Huur mij in als freelance SEO consultant!


Acties:
  • 0 Henk 'm!

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 13:41

Pelle

🚴‍♂️

Math.random en Math.round zijn je vrienden:
http://developer.irt.org/script/1264.htm

Acties:
  • 0 Henk 'm!

  • Charango
  • Registratie: Juni 2001
  • Laatst online: 27-04 23:32
Op woensdag 24 april 2002 22:19 schreef Pelle het volgende:
Math.random en Math.round zijn je vrienden:
http://developer.irt.org/script/1264.htm
Hiermee krijg ik wel één nummer en ik kan hem natuurlijk ook tien keer aanroepen, maar hoe zorg ik er voor dat er dan geen getallen dubbel voorkomen?

CrashOne, dank je voor je suggestie. Ik heb nog niet eerder met arrays gewerkt dus ik ben me even aan het inlezen, ik heb bijvoorbeeld nog geen idee hoe ik kan controleren of een waarde al voorkomt.

Acties:
  • 0 Henk 'm!

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 13:41

Pelle

🚴‍♂️

Pseudocode:
code:
1
2
3
4
5
6
7
8
9
zolang aantal random nummers kleiner dan 10
    zet gevonden op false
    genereer random getal
    voor elk element in array
      bekijk of random getal gelijk is aan element
      zo ja, zet variabele gevonden op true
    einde voor elk
    indien niet gevonden voeg element toe aan array
einde zolang

Acties:
  • 0 Henk 'm!

Anoniem: 26306

Even een vlugge schets:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var photosNum = 20; // het aantal foto's waaruit gekozen kan worden
var chooseNum = 10; // het aantal foto's dat gekozen moet worden
var chosen = new Array(chooseNum); // de array die de gekozen foto's bevat

// doe hetvolgende 'chooseNum' keer
for (var i = 0; i < chooseNum; i++) {
  // do .. while, doe het in ieder geval 1 keer, en check daarna
  do {
    // kies een getal van 1 tot photosNum
    getal = Math.floor(Math.random() * photosNum) + 1;
  } while (inArray(chosen, getal)) // als het getal al in de array staat -> kies opnieuw
  chosen[i] = getal; // deze waarde stond er blijkbaar niet in, dus we voegen hem toe
}

// functie om te kijken of de waarde al in de array staat
function inArray(argArray, argValue) {
  for (var i = 0; i < argArray.length; i++) {
    if (argArray[i] == argValue) return true;
  }
  return false;
}

Er kan wat aan mankeren, en ik garandeer niks, maar ik hoop dat het principe duidelijk is :)

Acties:
  • 0 Henk 'm!

  • Charango
  • Registratie: Juni 2001
  • Laatst online: 27-04 23:32
Pelle en Cheatah, mijn dank is groot! :)
Pagina: 1