Tämä pikku funktio on automatisoitu versio tuosta Putkan Ohjelmointikielihakemistosta löytyvästä INT((yläraja - alaraja + 1) * RND + alaraja)-höskästä. Funktio arpoo satunnaisluvun väliltä alaraja - ylaraja. Syntaksi on:
muuttuja = XRAND(alaraja, ylaraja)
Malli:
sattuma% = XRAND(4, 9)
Tämä arpoo luvun väliltä 4 - 9 muuttujaan sattuma%
Ilmoittakaa virheistä, ja ehdotukset ovat tervetulleita!
FUNCTION XRAND(alaraja, ylaraja) RANDOMIZE TIMER IF ylaraja > alaraja THEN XRAND = INT((ylaraja - alaraja + 1) * RND + alaraja) END FUNCTION
Kommentteja...
Päh, parempi versio (mikä myös selventää randomoinnin toimintaa, funktiosta en tiedä onko samanlainen) olisi:
DIM SLUKU AS INTEGER, VIIMEKSI AS INTEGER SUB SIEMENLUKU(LUKU AS INTEGER) SLUKU = LUKU 'asetetaan siemenluku END SUB FUNCTION RAND(MAX AS INTEGER, MIN AS INTEGER) DIM LUQU AS INTEGER LUQU = SLUKU + 210 / 123 - VIIMEKSI MOD MAX DO UNTIL LUQU > MIN AND LUQU < MAX LUQU = (LUQU + 50) MOD MAX LOOP RAND = LUQU END FUNCTION
EDIT: versio mitä nää käyttää:
DIM SLUKU AS SINGLE, VIIMEKSI AS SINGLE SUB SIEMENLUKU(SINGLE AS INTEGER) SLUKU = LUKU 'asetetaan siemenluku END SUB FUNCTION RAND() DIM LUQU AS INTEGER LUQU = SLUKU + 210 / 123 - VIIMEKSI MOD 1000 RAND = LUQU / 50 END FUNCTION
Ja sitä RANDOMIZE-komentoa ei kannata käyttää aina kun arvot luvun, sillä se ymmärtääkseni heikentää satunnaisuutta.
No voisihan sitä RANDOMIZE-juttua parannellakin, mutta mitäs vikaa tässä sitten on?
Aihe on jo aika vanha, joten et voi enää vastata siihen.