7. Satunnaisuus

Satunnaisuus, random-kirjasto

Joskus ohjelmien toiminnassa halutaan hyödyntää satunnaisuutta. Tilanne tulee vastaan usein esimerkiksi peleissä. Näissä tapauksissa hyödynnetään random-kirjaston käskyjä.

Satunnaisuus ja listat

Luodaan lista jumppaliikkeistä ja pyydetään mikrobittiä valitsemaan niistä yksi joka rullaa näytöllä.



Ensimmäiseksi otetaan random kirjaston käskyt käyttöön 
import random

Luodaan lista kirjoittamalla listan nimi ja = merkin oikelle puolelle hakasulkujen sisälle listan jäsenet pilkulla toisistaan erotettuna.

Seuraavaksi tarvitaan kaksi sisäkkäistä käskyä. Käytetään ensin tuttua komentoa display.scroll() ja sulkujen sisään laitetaan argumentiksi  
random.choice() metodi. Tämän argumentiksi puolestaan laitetaan listan nimi. Ole huolellinen että laitat oikean määrän sulkuja.

Lopputuloksena ohjelma tulostaa satunnaisen listan jäsenen nimen micro:bitin näytölle.

Harjoitus: Kirjoita ohjelma joka valitsee satunnaiseksi voittajaksi yhden oppilaan viiden oppilaan ryhmästä. Voittajan nimi rullaa mikro:bitin näytölle.

Satunnaisesti valittavat numerot

Random kirjasto tarjoaa useita tapoja luoda satunnaisia numeroita. Luodaan ohjelma joka antaa satunnaisen kokonaisluvun 1-10 väliltä.

Yksi tapa olisi tietysti luoda numeroista lista kuten edellisessä esimerkissä. Myös yksinkertaisempia vaihtoehtoja kuitenkin löytyy. 



Käytetään tuttua display.show() käskyä. Koska display.show osaa näyttää mikrobitin näytöllä ainoastaan merkkijonoja meidän on ensin muutettava kokonaisluku(int) merkkijonoksi (str). Tämän jälkeen luodaan satunnaisluku käskyllä random.randint() Sulkujen sisällä annetaan argumentteina ensimmäinen ja viimeinen luku joista arvonta suoritetaan. Ole taas tarkkana sulkujen kanssa!

Hieman eritavalla toimii metodi random.randrange() Siinä sulkuihin annetaan argumentiksi vain yksi luku ja tulosteeksi arvotaan kokonaisluku nollan ja tuon luvun väliltä. Kuitenkin niin että sulkuihin kirjoitettu luku ei tule enää mukaan arvontaan.



Esim. Ylläolevassa esimerkissä ohjelma tulostaa mikro:bitin näytölle jonkun kokonaisluvun väliltä 0-9.

Harjoitus: Tee ohjelma joka toimii noppana, eli arpoo satunnaisen kokonaisluvun väliltä 1-6. Kokeile käyttää sekä random.randint() että random.randrange() metodeja nopan teossa.

BONUS: Muokkaa ohjelmaa niin, että aina käyttäjän painaessa painiketta A arvotaan uusi numero.