Institute of Computer Science
  1. Courses
  2. 2023/24 fall
  3. Computer Programming (LTAT.SO.001)
ET
Log in

Computer Programming 2023/24 fall

  • Pealeht
  • 1. Sissejuhatus
  • 2. Tingimuslause
  • 3. Tsükkel
  • 4. Järjend ja for-tsükkel
  • 5. Funktsioon
  • 6. Andmevahetus. Lihtne kasutajaliides
  • 7. Kahemõõtmeline järjend. Kahekordne tsükkel
  • 8. Kordamine 1. kontrolltööks?
  • 9. Kontrolltöö?
  • 10. Viitamine ja muteerimine
  • 11. Andmestruktuurid
  • 12. Rekursioon ja andmetöötlus
  • Projekti esitamine ja esitlused
  • 13. Objektorienteeritud programmeerimine
  • 14. Kordamine 2. kontrolltööks?
  • 15. Kontrolltöö 2?
  • Loengud
  • Moodle
  • Lahendus
  • Thonny paigaldamine
  • Thonny logide esitamine
  • Kiireksamist
  • Viited
< eelmine2. nädala sisukordjärgmine >

2.5 Juhuslik arv

JUHUSLIKU ARVU GENEREERIMINE

Vahest läheb programmeerimises vaja, et arvuti oskaks genereerida juhuslikke arve. Näiteks proovime teha programmi, mis simuleeriks mündiviskamist ja saaks tulemuseks kulli või kirja.

Kuidas panna arvuti juhuslikult valima kahe valiku vahel?

Selles tulebki meile appi juhusliku arvu genereerimine. Funktsiooniga randint(1,2) saame võrdse tõenäosusega ühe arvu vahemikust 1-st 2-ni (mõlemad kaasaarvatud). Kuna sinna vahemikku jäävadki vaid kaks arvu: 1 ja 2, siis valitakse nende vahel. Kumb igal konkreetsel juhul tuleb, ei ole ette teada. Võrdse tõenäosuse puhul on mõlema juhu tõenäosus 50% (sageli öeldakse ka 0,5). Kui teha piisavalt palju katseid, siis umbes samapaljudel juhtudel tuleb tulemuseks 1 kui 2. Oluline on siin märkida, et väikestel katsearvudel võib erinevus olla täiesti märgatav. Näiteks vabalt võib juhtuda, et kümnest juhust on seitsmel juhul 1 ja kolmel juhul 2. Järgmisel nädalal asume juhuslikkust tsükliliselt "kontrollima".

Sageli on meil aga vaja rohkem variante kui kaks. Näiteks randint(1,3) annab kas arvu 1, 2 või 3. Igaühe tõenäosus on siis ligikaudu 33,3% (1/3).

Funktsiooni randint() saab aga kasutada ainult siis, kui esimesele reale kirjutada, et seda funktsiooni programmis kasutatakse:

from random import randint

See tähendab, et me impordime moodulist random funktsiooni randint. Seal moodulis on veel teisi huvitavaid funktsioone ka. Vajadusel saab importida ka kõiki neid korraga:

from random import *

Proovige aga nüüd järgmist programmi:

from random import randint

suvaline_arv = randint(1, 2)
if suvaline_arv == 1:
    arvuti_valik = "kull"
else:
    arvuti_valik = "kiri"

print("Mündiviskes võitis: " + arvuti_valik)

Kui nüüd küsida kasutajalt, kas ta valib kulli või kirja, siis saamegi kulli ja kirja viskamise mängu:

from random import randint

print("Kas kull (1) või kiri (2)?")
kasutaja_valik = int(input())
suvaline_arv = randint(1, 2)

if kasutaja_valik == suvaline_arv:
    print("Arvasid õigesti.")
else:
    print("Arvasid valesti.")

Teeme nüüd programmi ümber, lisades selle tingimuslause ühte harusse teise tingimuslause.

from random import randint

print("Kas kull (1) või kiri (2)?")
kasutaja_valik = int(input())
suvaline_arv = randint(1, 2)

if kasutaja_valik == suvaline_arv:
    print("Arvasid õigesti.")
    suvaline_arv2 = randint(1, 2)
    if kasutaja_valik == suvaline_arv2:
        print("Arvamus oli õige ka teisel korral.")
    else:
        print("Teist korda see arvamus enam õige ei olnud.")        
else:
    print("Arvasid valesti.")

Ülesanne

Kes tahab sel teemal edasi mõtiskleda, võiksid läbi mõelda, mis oleks teisiti, kui

suvaline_arv2 = randint(1, 2) asemel oleks suvaline_arv2 = randint(1, 3)

või

suvaline_arv2 = randint(1, 2) asemel oleks suvaline_arv1 = randint(1, 2)

VIDEO

Kui materjalis juhuslikust arvust midagi selgusetuks jäi, siis vaadake kokkuvõtvat videot.


< eelmine2. nädala sisukordjärgmine >
  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment