Avatar billede mothwe Nybegynder
12. marts 2002 - 07:49 Der er 5 kommentarer og
2 løsninger

LynLotto-generator

Hvordan laver man en LynLotto-generator! Det er nemt nok at få 7 tilfældige numre ud mellem 1 og 36 - det kan f.eks. gøres sådan her:

<SCRIPT LANGUAGE="JavaScript">

document.write("<TABLE BORDER=0 WIDTH=180 BGCOLOR=YELLOW><TR><TD><DIV ALIGN=center><FONT

COLOR=BLACK><H2>LynLotto</H2></DIV>" + [(Math.floor((Math.random() * 36)))] + ", " +

[(Math.floor((Math.random() * 36)))] + ", " + [(Math.floor((Math.random() * 36)))] + ", " +

[(Math.floor((Math.random() * 36)))] + ", " + [(Math.floor((Math.random() * 36)))] + ", " +

[(Math.floor((Math.random() * 36)))] + ", " + [(Math.floor((Math.random() * 36)))] +

"</FONT></TD></TR></TABLE>")

</SCRIPT>

Problemet er selvfølgelig at det samme tal ikke må forekomme flere gange! Hvordan skæres den?
Avatar billede fri-hash Nybegynder
12. marts 2002 - 08:00 #1
som pseudokode:

lav et tomt array til lottotallene

while(sizeof(lottoarray)<7){
  temptal = (Math.floor((Math.random() * 36)))
  if( temptal ikke findes i lottoarray){
      tilføj temptal til lottoarray
  }
}
Avatar billede mothwe Nybegynder
12. marts 2002 - 08:10 #2
Ja, jeg ser logikken! Men kan du være lidt mere specifik - jeg ved ikke helt hvordan jeg programmerer "temptal ikke findes i lottoarray"!
Avatar billede fri-hash Nybegynder
12. marts 2002 - 08:23 #3
nu kender jeg ikke lige javascriptfunktionerne så godt - der er sikkert en funktion til det

ellers:
function in_array(needle, haystack){
  var fundet = 0;
  for(i=0;i<sizeof(haystack);i++){
    if(haystack[i]==needle){
        fundet++;
    }
  }
  return fundet;
}

denne funktion vil så returnere antallet af needle i haystack - og da nul tolkes som false, alt andet true kan du så sige:

if(!in_array(temptal, lottoarray)){
Avatar billede ras2000 Nybegynder
13. marts 2002 - 18:37 #4
Denne her er ret simpel:
function genlottotal(){
    tal = new Array();
    for (i=1;i<37;i++){
        tal[i-1] = i;
    }
    alert(tal.join(","));
    lottotal = tal.sort(Docompare);
    lottotal = lottotal.slice(0,6);
    alert(lottotal.join(","));
}
function Docompare(a,b){
    return Math.random() - Math.random();
}
Avatar billede ras2000 Nybegynder
13. marts 2002 - 18:44 #5
Denne her sorterer også de fundne tal efter størrelse.
function genlottotal(){
    tal = new Array();
    for (i=1;i<37;i++){
        tal[i-1] = i;
    }
    lottotal = tal.sort(Docompare);
    lottotal = lottotal.slice(0,7).sort(docompareigen);
    alert(lottotal.join(","));
}
function Docompare(a,b){
    return Math.random() - Math.random();
}
function docompareigen(a,b){
    return a - b;
}
Og finder iøvrigt 7 tilfældige tal, jeg kan ikke lige huske hvor mange der er i et lottospil.
Avatar billede mothwe Nybegynder
14. marts 2002 - 12:44 #6
Jeg deler pointene imellem jer, fordi fri-hash gav mig teorien og ras2000 den konkrete kode - tak til jer begge!
Avatar billede ras2000 Nybegynder
14. marts 2002 - 13:02 #7
Selv tak!
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