{"id":257,"date":"2019-01-16T12:13:14","date_gmt":"2019-01-16T12:13:14","guid":{"rendered":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/?post_type=chapter&#038;p=257"},"modified":"2019-08-27T16:38:50","modified_gmt":"2019-08-27T16:38:50","slug":"juhuslik-arv","status":"publish","type":"chapter","link":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/chapter\/juhuslik-arv\/","title":{"raw":"Juhuslik arv","rendered":"Juhuslik arv"},"content":{"raw":"<p class=\"vspace\">Vahel l\u00e4heb programmeerimises vaja, et arvuti oskaks genereerida juhuslikke arve. N\u00e4iteks proovime teha programmi, mis simuleeriks m\u00fcndiviskamist ja saaks tulemuseks kulli v\u00f5i kirja.<\/p>\r\n<p class=\"vspace\">Kuidas panna arvuti juhuslikult valima kahe valiku vahel?<\/p>\r\n<p class=\"vspace\">Selleks tuleb meile appi juhusliku arvu genereerimine. Funktsiooniga <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">randint(1,2)<\/code> saame v\u00f5rdse t\u00f5en\u00e4osusega \u00fche arvu vahemikust 1-st 2-ni (m\u00f5lemad kaasa arvatud). Kuna sinna vahemikku j\u00e4\u00e4vadki vaid kaks arvu(1 ja 2), siis valitakse nende vahel. Kumb igal konkreetsel juhul tuleb, ei ole ette teada. V\u00f5rdse t\u00f5en\u00e4osuse puhul on m\u00f5lema juhu t\u00f5en\u00e4osus 50% (sageli \u00f6eldakse ka 0,5). Kui teha piisavalt palju katseid, siis tulemused 1 kui 2 esinevad ligikaudu sama arv kordi. Oluline on siin m\u00e4rkida, et v\u00e4ikestel katsearvudel v\u00f5ib erinevus olla t\u00e4iesti m\u00e4rgatav. Vabalt v\u00f5ib juhtuda, et k\u00fcmnest juhust on seitsmel juhul 1 ja kolmel juhul 2.<\/p>\r\n<p class=\"vspace\">Sageli on meil vaja rohkem variante kui kaks. N\u00e4iteks <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">randint(1,3)<\/code><\/code> annab kas arvu 1, 2 v\u00f5i 3. Iga\u00fche t\u00f5en\u00e4osus on siis ligikaudu 33,3% (1\/3).<\/p>\r\n<p class=\"vspace\">Funktsiooni <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">randint()<\/code><\/code> saab kasutada ainult siis, kui esimesele reale kirjutada, et seda funktsiooni programmis kasutatakse:<\/p>\r\n\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">from random import randint<\/pre>\r\n<p class=\"vspace\">See t\u00e4hendab, et me impordime <a class=\"urllink\" href=\"https:\/\/docs.python.org\/3.6\/library\/random.html\" target=\"_blank\" rel=\"noopener noreferrer\">moodulist <code>random<\/code><\/a> funktsiooni <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">randint<\/code>. Seal moodulis on veel teisigi huvitavaid funktsioone. Juhuslikke arve saab veel <a class=\"urllink\" href=\"https:\/\/docs.python.org\/3.6\/library\/secrets.html#module-secrets\" target=\"_blank\" rel=\"noopener noreferrer\">mooduli <code>secrets<\/code><\/a> abil, mille kasutamine on turvaline ka kr\u00fcptograafiliste programmide puhul.<\/p>\r\n<p class=\"vspace\">Meie j\u00e4tkame siiski mooduliga <code>random<\/code>, mille k\u00f5ik funktsioonid saab importida korraga:<\/p>\r\n\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">from random import *<\/pre>\r\nKatseta j\u00e4rgmist programmi:\r\n\r\n<strong>N\u00e4iteprogramm. M\u00fcndivise I<\/strong>\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">from random import randint\r\n \r\nsuvaline_arv = randint(1, 2)\r\nif suvaline_arv == 1:\r\n    arvuti_valik = \"kull\"\r\nelse:\r\n    arvuti_valik = \"kiri\"\r\n \r\nprint(\"M\u00fcndiviskes v\u00f5itis: \" + arvuti_valik)<\/pre>\r\nKui n\u00fc\u00fcd k\u00fcsida kasutajalt, kas ta valib kulli v\u00f5i kirja, siis saamegi kulli ja kirja viskamise m\u00e4ngu:\r\n\r\n<strong>N\u00e4iteprogramm. M\u00fcndivise II<\/strong>\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">from random import randint\r\n \r\nprint(\"Kas kull (1) v\u00f5i kiri (2)?\")\r\nkasutaja_valik = int(input())\r\nsuvaline_arv = randint(1, 2)\r\n \r\nif kasutaja_valik == suvaline_arv:\r\n    print(\"Arvasid \u00f5igesti.\")\r\nelse:\r\n    print(\"Arvasid valesti.\")<\/pre>\r\nLisame \u00fchte tingimuslause harusse veel teise tingimuslause:\r\n\r\n<strong>N\u00e4iteprogramm. M\u00fcndivise III<\/strong>\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">from random import randint\r\n \r\nprint(\"Kas kull (1) v\u00f5i kiri (2)?\")\r\nkasutaja_valik = int(input())\r\nsuvaline_arv = randint(1, 2)\r\n \r\nif kasutaja_valik == suvaline_arv:\r\n    print(\"Arvasid \u00f5igesti.\")\r\n    suvaline_arv2 = randint(1, 2)\r\n    if kasutaja_valik == suvaline_arv2:\r\n        print(\"Arvamus oli \u00f5ige ka teisel korral.\")\r\n    else:\r\n        print(\"Teist korda see arvamus enam \u00f5ige ei olnud.\")       \r\nelse:\r\n    print(\"Arvasid valesti.\")<\/pre>\r\nSelle programmi plokkskeem on j\u00e4rgnev:\r\n\r\n<img class=\"size-full wp-image-306 aligncenter\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/01\/Ndal2_kullvoikiri1.png\" alt=\"\" width=\"423\" height=\"779\" \/>\r\n<h3>Enesekontroll (1 \u00fclesanne)<\/h3>\r\n<code>[h5p id=\"49\"]<\/code>\r\n<p class=\"vspace\">Kes tahab sel teemal edasi m\u00f5tiskleda, v\u00f5ib l\u00e4bi m\u00f5elda, mis oleks teisiti, kui<\/p>\r\n\r\n<ul>\r\n \t<li class=\"vspace\"><code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">suvaline_arv2 = randint(1, 2)<\/code><\/code> asemel oleks <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">suvaline_arv2 = randint(1, 3)<\/code><\/code><\/li>\r\n \t<li><code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">suvaline_arv2 = randint(1, 2)<\/code><\/code> asemel oleks <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">suvaline_arv1 = randint(1, 2)<\/code><\/code><\/li>\r\n<\/ul>\r\n<h3>Videomaterjal<\/h3>\r\nVaata ka juhuslike arvude <a href=\"https:\/\/www.uttv.ee\/naita?id=23878\" target=\"_blank\" rel=\"noopener noreferrer\">kokkuv\u00f5tvat videot<\/a>.","rendered":"<p class=\"vspace\">Vahel l\u00e4heb programmeerimises vaja, et arvuti oskaks genereerida juhuslikke arve. N\u00e4iteks proovime teha programmi, mis simuleeriks m\u00fcndiviskamist ja saaks tulemuseks kulli v\u00f5i kirja.<\/p>\n<p class=\"vspace\">Kuidas panna arvuti juhuslikult valima kahe valiku vahel?<\/p>\n<p class=\"vspace\">Selleks tuleb meile appi juhusliku arvu genereerimine. Funktsiooniga <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">randint(1,2)<\/code> saame v\u00f5rdse t\u00f5en\u00e4osusega \u00fche arvu vahemikust 1-st 2-ni (m\u00f5lemad kaasa arvatud). Kuna sinna vahemikku j\u00e4\u00e4vadki vaid kaks arvu(1 ja 2), siis valitakse nende vahel. Kumb igal konkreetsel juhul tuleb, ei ole ette teada. V\u00f5rdse t\u00f5en\u00e4osuse puhul on m\u00f5lema juhu t\u00f5en\u00e4osus 50% (sageli \u00f6eldakse ka 0,5). Kui teha piisavalt palju katseid, siis tulemused 1 kui 2 esinevad ligikaudu sama arv kordi. Oluline on siin m\u00e4rkida, et v\u00e4ikestel katsearvudel v\u00f5ib erinevus olla t\u00e4iesti m\u00e4rgatav. Vabalt v\u00f5ib juhtuda, et k\u00fcmnest juhust on seitsmel juhul 1 ja kolmel juhul 2.<\/p>\n<p class=\"vspace\">Sageli on meil vaja rohkem variante kui kaks. N\u00e4iteks <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">randint(1,3)<\/code><\/code> annab kas arvu 1, 2 v\u00f5i 3. Iga\u00fche t\u00f5en\u00e4osus on siis ligikaudu 33,3% (1\/3).<\/p>\n<p class=\"vspace\">Funktsiooni <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">randint()<\/code><\/code> saab kasutada ainult siis, kui esimesele reale kirjutada, et seda funktsiooni programmis kasutatakse:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">from random import randint<\/pre>\n<p class=\"vspace\">See t\u00e4hendab, et me impordime <a class=\"urllink\" href=\"https:\/\/docs.python.org\/3.6\/library\/random.html\" target=\"_blank\" rel=\"noopener noreferrer\">moodulist <code>random<\/code><\/a> funktsiooni <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">randint<\/code>. Seal moodulis on veel teisigi huvitavaid funktsioone. Juhuslikke arve saab veel <a class=\"urllink\" href=\"https:\/\/docs.python.org\/3.6\/library\/secrets.html#module-secrets\" target=\"_blank\" rel=\"noopener noreferrer\">mooduli <code>secrets<\/code><\/a> abil, mille kasutamine on turvaline ka kr\u00fcptograafiliste programmide puhul.<\/p>\n<p class=\"vspace\">Meie j\u00e4tkame siiski mooduliga <code>random<\/code>, mille k\u00f5ik funktsioonid saab importida korraga:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-linenumbers=\"false\">from random import *<\/pre>\n<p>Katseta j\u00e4rgmist programmi:<\/p>\n<p><strong>N\u00e4iteprogramm. M\u00fcndivise I<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">from random import randint\r\n \r\nsuvaline_arv = randint(1, 2)\r\nif suvaline_arv == 1:\r\n    arvuti_valik = \"kull\"\r\nelse:\r\n    arvuti_valik = \"kiri\"\r\n \r\nprint(\"M\u00fcndiviskes v\u00f5itis: \" + arvuti_valik)<\/pre>\n<p>Kui n\u00fc\u00fcd k\u00fcsida kasutajalt, kas ta valib kulli v\u00f5i kirja, siis saamegi kulli ja kirja viskamise m\u00e4ngu:<\/p>\n<p><strong>N\u00e4iteprogramm. M\u00fcndivise II<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">from random import randint\r\n \r\nprint(\"Kas kull (1) v\u00f5i kiri (2)?\")\r\nkasutaja_valik = int(input())\r\nsuvaline_arv = randint(1, 2)\r\n \r\nif kasutaja_valik == suvaline_arv:\r\n    print(\"Arvasid \u00f5igesti.\")\r\nelse:\r\n    print(\"Arvasid valesti.\")<\/pre>\n<p>Lisame \u00fchte tingimuslause harusse veel teise tingimuslause:<\/p>\n<p><strong>N\u00e4iteprogramm. M\u00fcndivise III<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">from random import randint\r\n \r\nprint(\"Kas kull (1) v\u00f5i kiri (2)?\")\r\nkasutaja_valik = int(input())\r\nsuvaline_arv = randint(1, 2)\r\n \r\nif kasutaja_valik == suvaline_arv:\r\n    print(\"Arvasid \u00f5igesti.\")\r\n    suvaline_arv2 = randint(1, 2)\r\n    if kasutaja_valik == suvaline_arv2:\r\n        print(\"Arvamus oli \u00f5ige ka teisel korral.\")\r\n    else:\r\n        print(\"Teist korda see arvamus enam \u00f5ige ei olnud.\")       \r\nelse:\r\n    print(\"Arvasid valesti.\")<\/pre>\n<p>Selle programmi plokkskeem on j\u00e4rgnev:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-306 aligncenter\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/01\/Ndal2_kullvoikiri1.png\" alt=\"\" width=\"423\" height=\"779\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/01\/Ndal2_kullvoikiri1.png 423w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/01\/Ndal2_kullvoikiri1-163x300.png 163w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/01\/Ndal2_kullvoikiri1-65x120.png 65w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/01\/Ndal2_kullvoikiri1-225x414.png 225w, https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-content\/uploads\/sites\/6\/2019\/01\/Ndal2_kullvoikiri1-350x645.png 350w\" sizes=\"auto, (max-width: 423px) 100vw, 423px\" \/><\/p>\n<h3>Enesekontroll (1 \u00fclesanne)<\/h3>\n<p><code><\/p>\n<div id=\"h5p-49\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-49\" class=\"h5p-iframe\" data-content-id=\"49\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"Tingimuslause-5-m\u00fcndivise\"><\/iframe><\/div>\n<\/div>\n<p><\/code><\/p>\n<p class=\"vspace\">Kes tahab sel teemal edasi m\u00f5tiskleda, v\u00f5ib l\u00e4bi m\u00f5elda, mis oleks teisiti, kui<\/p>\n<ul>\n<li class=\"vspace\"><code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">suvaline_arv2 = randint(1, 2)<\/code><\/code> asemel oleks <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">suvaline_arv2 = randint(1, 3)<\/code><\/code><\/li>\n<li><code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">suvaline_arv2 = randint(1, 2)<\/code><\/code> asemel oleks <code><code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">suvaline_arv1 = randint(1, 2)<\/code><\/code><\/li>\n<\/ul>\n<h3>Videomaterjal<\/h3>\n<p>Vaata ka juhuslike arvude <a href=\"https:\/\/www.uttv.ee\/naita?id=23878\" target=\"_blank\" rel=\"noopener noreferrer\">kokkuv\u00f5tvat videot<\/a>.<\/p>\n","protected":false},"author":12,"menu_order":9,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-257","chapter","type-chapter","status-publish","hentry"],"part":247,"_links":{"self":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/257","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/users\/12"}],"version-history":[{"count":4,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/257\/revisions"}],"predecessor-version":[{"id":459,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/257\/revisions\/459"}],"part":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/parts\/247"}],"metadata":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapters\/257\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/media?parent=257"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/pressbooks\/v2\/chapter-type?post=257"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/contributor?post=257"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/programmeerimine\/wp-json\/wp\/v2\/license?post=257"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}