Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: QB: Satunnaislukuja helposti

Juhko [28.10.2006 13:40:43]

#

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

Juhko [28.10.2006 13:43:18]

#

Kommentteja...

moptim [31.10.2006 18:42:18]

#

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

Megant [21.11.2006 21:00:43]

#

Ja sitä RANDOMIZE-komentoa ei kannata käyttää aina kun arvot luvun, sillä se ymmärtääkseni heikentää satunnaisuutta.

Juhko [22.11.2006 15:58:02]

#

No voisihan sitä RANDOMIZE-juttua parannellakin, mutta mitäs vikaa tässä sitten on?

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta