Avatar billede slammer12 Nybegynder
15. juni 2003 - 18:33 Der er 17 kommentarer og
2 løsninger

tilfældigt tal

random ()*299 + 1 giver et helt tal mellem 1 og 300. Men hvordan kan jeg genere et tilfældigt tal mellem f.eks 10 og 30?


///Boe
Avatar billede barklund Nybegynder
15. juni 2003 - 19:11 #1
Ved at sige:

10+random(20);

Generelt

rand = function (fra,til) {
    return fra+random(til-fra);
}
Avatar billede barklund Nybegynder
15. juni 2003 - 19:12 #2
Eller med Math.random:

10+20*Math.random();

Generelt

rand = function (fra,til) {
    return fra+Math.random()*(til-fra);
}
Avatar billede slammer12 Nybegynder
15. juni 2003 - 19:15 #3
Jeg har en række billeder med navnene 01 til 31.
Hvis "random" generer et tal <10 skal der et 0 foran.
Hvordan gør jeg så dette?
Avatar billede alexander_j Nybegynder
15. juni 2003 - 19:38 #4
if(tal<10) {tal="0"+tal;}
Avatar billede slammer12 Nybegynder
15. juni 2003 - 20:11 #5
Det virker! Tak for det!
Billednavnene hedder XX01.jpg til xx30.jpg, derfor er linien      "if(tal<10) {tal="0"+tal;}" nødvendig.
Men under hvert billede skal datoen stå (det tilfældigt generede tal er = dato).
Når tallet er <10 skal der ikke stå f.eks. 08 men bare 8. Hvordan gør jeg dette??
Avatar billede baitianlong Nybegynder
15. juni 2003 - 20:23 #6
if(int(tal.charAt(0)) == 0) {
  tal = tal.substring(1, tal.length);
}

Den burde fixe det tilbage igen (o;
Avatar billede slammer12 Nybegynder
15. juni 2003 - 20:28 #7
Det virker ikke helt, der kommer ikke en dato på hver gang. Her er mit script:

createEmptyMovieClip("billedeHolder", 0);
billedeHolder.onEnterFrame = function() {
    if (!done) {
        this._x = 10;
        // øverste venstre hjørne af billedet's x
        this._y = 10;
        // øverste venstre hjørne af billedet's y
        tal = random(29)+1;
        // 29 = 1-30
        if (tal<10) {
            tal = "0"+tal;
        }
        this.loadMovie("/billeder/januar/"+tal+"01.jpg");
        if (int(tal.charAt(0)) == 0) {
            tal = tal.substring(1, tal.length);
        }
        myDato = " "+tal+" januar";
        done = true;
    }
};
Avatar billede baitianlong Nybegynder
15. juni 2003 - 20:35 #8
Hvad mener du med at der ikke kommer en dato på hver gang ? Hvornår gør der ikke, og hvornår gør der ??

*Skriv dette i stedet for:

if (tal<10) {
    tal1 = "0"+tal;
} else {
    tal1 = tal;
}
this.loadMovie("/billeder/januar/"+tal1"01.jpg");
myDato = " "+tal+" januar";

Så er det fikset (O;
Avatar billede slammer12 Nybegynder
15. juni 2003 - 21:03 #9
Nu har jeg kørt filmen ca, 75 gange. Jeg har endnu ikke set et tal under <10 !
Kan det passe at tallene ikke er så tilfældige mere?
Avatar billede baitianlong Nybegynder
15. juni 2003 - 21:07 #10
Nej, det burde være tilfældigt. Du kan jo prøve med dette i en tom flash film:

createEmptyMovieClip("test", 0);
test.onEnterFrame = function() {
  tal = random(29) + 1;
  if(tal < 10) tal1 = "0" + tal
  else tal1 = tal;
  trace(tal1);
}

Så kan du se tilfældigheden (o;
Avatar billede alexander_j Nybegynder
15. juni 2003 - 21:15 #11
hvad bruger du til at bestemme tallet?
Avatar billede alexander_j Nybegynder
15. juni 2003 - 21:17 #12
Så det for sent ;-) Din kode:
tal = random(29)+1;
burde give et tal mellem 1 og 29 (begge tal inklusive)
Avatar billede slammer12 Nybegynder
16. juni 2003 - 21:58 #13
Min flashfilm generer ingen tal der er <10! Dvs. billederne fra 01-09 bliver aldrig vist !?!
Se selv på adressen: http://home1.stofanet.dk/boelarsen/random/random.html
På denne adresse ligger også filen randompix.fla
Avatar billede alexander_j Nybegynder
16. juni 2003 - 23:07 #14
if (int(tal.charAt(0)) == 0) {
  tal = tal.substring(1, tal.length);
}

prøv at fjerne denne stump fra din kode!
Avatar billede alexander_j Nybegynder
16. juni 2003 - 23:15 #15
Og sæt denne her istedet:
if (tal.charAt(0)=="0") {
    tal = tal.substring(1,tal.length);
}
Avatar billede slammer12 Nybegynder
17. juni 2003 - 17:57 #16
Nu kommer der tal frem der er <10. Men ved disse tal bliver billedet ikke vist, dette skyldes sikkert at filnavnet ikke er korrekt. Billederne hedder 0101, 0201....3101.jpg.......
http://home1.stofanet.dk/boelarsen/random/random.html
På denne adresse ligger også filen randompix222.fla
Avatar billede alexander_j Nybegynder
17. juni 2003 - 20:04 #17
Hvad med denne her :-)

createEmptyMovieClip("billedeHolder", 0);
billedeHolder.onEnterFrame = function() {
    if (!done) {
        this._x = 10;
        // øverste venstre hjørne af billedet's x
        this._y = 10;
        // øverste venstre hjørne af billedet's y
        tal = random(29)+1;
        // 29 = 1-30
        myDato = " "+tal+" januar";
        if (tal<10) {
            tal = "0"+tal;
        }
        this.loadMovie("/billeder/januar/"+tal+"01.jpg");
        done = true;
    }
};
Avatar billede slammer12 Nybegynder
17. juni 2003 - 20:14 #18
SÅDAN! Nu kører det bare derud af...Mange tak for hjælpen.
Er det muligt at skalere billederne til en bestemt størrelse?
Lav lige et "svar" så det-der-med pointene går iorden.

///Boe
Avatar billede alexander_j Nybegynder
17. juni 2003 - 20:18 #19
Du kan vride og forvride billederne efter ønske, når de er loadet ved brug af:
mypic._width=100;
mypic._height=100;
mypic._xscale=50;
mypic._yscale=50;

Her er et svar (hvis jeg skal have andel i mængden af point) ;)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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