Avatar billede polimit Nybegynder
09. april 2008 - 10:59 Der er 18 kommentarer

Undgå at få det samme Random-tal i træk

Understående kode ligger i en funktion, der bliver kaldt hvert 3 sekundt:

var num;
while (num == 12 || num == 5 || num==null) {
var num = Math.ceil((Math.random()*16));
}

Det skulle gerne resultere i et tal fra 1 til og med 16 - med undtagelse af 5 og 12.

Spørgsmålet er, hvordan laver man det sådan at det samme tal ikke bliver valgt 2 gange i træk???
Avatar billede w13 Novice
09. april 2008 - 11:27 #1
Du kan vel gøre sådan her:
--------------------------
var num;
while (num==oldRandom || num == 12 || num == 5 || num==null) {
  var num = Math.ceil((Math.random()*16));
}
oldRandom=num;
--------------------------
Så skal du bare lige definere var oldRandom=0; globalt.
Avatar billede polimit Nybegynder
09. april 2008 - 11:33 #2
Når det skal erklæres globalt, er det så helt udenfor funktionen?
Avatar billede polimit Nybegynder
09. april 2008 - 11:44 #3
For jeg synes hverken jeg kan få det til at virke uanset hvor jeg placerer den...
Avatar billede w13 Novice
09. april 2008 - 11:46 #4
Ja, f.eks.:

var oldRandom=0;
function Rnd(){
  var num==0;
  while (num==oldRandom || num == 12 || num == 5) {
    var num = Math.ceil((Math.random()*16));
  }
  oldRandom=num;
}
Avatar billede polimit Nybegynder
09. april 2008 - 11:53 #5
Så burde man kunne sætte en alert ind sådan her, ikke?

var oldRandom=0;
function Rnd(){
  alert(oldRandom);
  var num==0;
  while (num==oldRandom || num == 12 || num == 5) {
    var num = Math.ceil((Math.random()*16));
  }
  oldRandom=num;
}

Ved at gøre det får jeg undefined... Og det var jo ikke meningen..
Avatar billede montago Praktikant
09. april 2008 - 12:01 #6
der skal ikke stå 'var' inden i while loop'et

husk at 'return num'
Avatar billede polimit Nybegynder
09. april 2008 - 12:15 #7
Jeg forstår ikke helt... Kunne du prøve at skrive det?
Avatar billede w13 Novice
09. april 2008 - 13:00 #8
var oldRandom=0;
function Rnd(){
  alert(oldRandom);
  var num==0;
  while (num==oldRandom || num == 12 || num == 5) {
    num = Math.ceil((Math.random()*16));
  }
  oldRandom=num;
}
Avatar billede polimit Nybegynder
09. april 2008 - 13:02 #9
oki, men her står jo ikke noget om 'return num'?
Avatar billede w13 Novice
09. april 2008 - 13:04 #10
Hov, var num==0; skal være var num=0;

var oldRandom=0;
function Rnd(){
  alert(oldRandom);
  var num=0;
  while (num==oldRandom || num == 12 || num == 5) {
    num = Math.ceil((Math.random()*16));
  }
  oldRandom=num;
}
Avatar billede w13 Novice
09. april 2008 - 13:04 #11
Nej, men det kan du jo bare sætte ind
Avatar billede w13 Novice
09. april 2008 - 13:07 #12
var oldRandom=0;
function Rnd(){
  alert(oldRandom);
  var num=0;
  while (num==oldRandom || num == 12 || num == 5) {
    num = Math.ceil((Math.random()*16));
  }
  oldRandom=num;
  return num;
}
Avatar billede polimit Nybegynder
09. april 2008 - 13:22 #13
Det må være mig den er galt med, for det der giver slet ikke noget.. Men tak for hjælpen...
Avatar billede w13 Novice
09. april 2008 - 13:39 #14
Dette her funger bare:

<html>
<head></head>
<body>

<script type="text/javascript">
var oldRandom=0;
function Rnd(){
  var num=0;
  while (num==oldRandom || num == 12 || num == 5 || num == 0) {
    num = Math.ceil((Math.random()*16));
  }
  oldRandom=num;
  return num;
}

alert(Rnd());
alert(Rnd());
alert(Rnd());
</script>

</body>
</html>
Avatar billede polimit Nybegynder
09. april 2008 - 14:10 #15
mange tak
Avatar billede w13 Novice
09. april 2008 - 14:46 #16
Så lidt :)
Avatar billede w13 Novice
09. april 2008 - 14:46 #17
;)
Avatar billede w13 Novice
09. april 2008 - 17:28 #18
Husk at acceptere mit svar her nederst på siden. ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester