Mielenkiintoinen video taas kerran, kiitos! Basic oli käytössä Commodore 64:n kanssa kauan sitten. Kuusnelosella sai myös helposti tehtyä ihan teksti-TV:n sivun näköisen jutun. Tein kerran lankku telkkariin liitettynä sivun, joka kertoi Veltto Virtasen voittaneen presidenttivaalit ja panin vain television kiinni. Aamulla kun naisystäväni avasi telkun, niin oli hänellä ihmettelemistä siinä, että Veltosta tuli presidentti. Koodaajana olin huono. Pikkuohjelmia tein ja tosiaan huomasin, että niissä oli aina virheitä. Tajusin lopettaa koodarin urani heti alun jälkeen.
Taisin olla 10 vuotta kun sain Sinclair ZX Spectrum tietokoneen. Sillä oli kiva tehdä pieniä basic-ohjelmia. Silloin oli huhuja, jonka mukaan tietokoneen satunnaislukugeneraattori suosii ykköstä vai oliko nollaa. En tiedä pitikö paikkansa. Lopulta kone taisi kuumeta ja hajota, kun jätin sen yötämyöten laskemaan lottorivejä. Jos vielä osaisin koodata, olisi kiva erilaisilla arvontakoodeilla testata käytännössä mikä on todennäköisyys. Tarkoitan että laittaisi koneen toistamaan koodia 100 miljoonaa kertaa ja tilastosta selviäisi onko tietokone täydellinen, vai onko koodissa pyöristysvirheitä yms. Oikea lottokone ei voi ikinä olla absoluuttisen satunnainen, koska pallojen paino ja kitka vaihtelevat. Mekaniikka myös takkuillut ja onhan sinne jäänyt palloja jumiin. Kahta samaa numeroa se ei kyllä anna.
Kohdassa 9:02 näkyy kuudes ja seitsemäs numero molemmat 25 eli koodiin tarvitaan if-lausekerakenne tarkistamaan, ettei satunnaisesti tule samoja numeroita ja jos tulee, niin arpoo uudelleen.
Näin on. Koko ohjelman rakenne kannattaisi tehdä uusiksi siten, että numerot arvottaisiin yhdessä silmukassa ja aina heti kun uusi numero arvotaan, tarkistettaisiin ettei se ole edellisten arvottujen joukossa.
kaikki saattaa muuttua ku joitain laskentoja muutetaan. Ja mistä sitä tietää, vaikka randomgeneraattori arpoisi oikeat numerot, mutta koodi lisääkin arpaonnen päälle jokaiseen +1, jolloin saa seittemän numeroa oikean voittorivin yläpuolelle.
Eikös tuossa korjatussa versiossa voi tulla nyt luku 41? Jos kone arpoo vaikka luvun 0,99, niin se pyöristyy ykköseen ja sitten se kerrotaan 40:llä ja siihen lisätään vielä +1
Korjaan vastaustani (sattui sama virhe kuin alkuperäisellä koodaajalla). The Int function returns the integer part of a specified number. Eli tuo taitaa pyöristää luvun aina alempaan kokonaislukuun.
@@Opettajanmies Alkuperäisessä koodissa oli sitten ongelma myös, että numeroa 40 ei voinut tulla. Mutta nyt onneks voi. Seuraavaksi pitäis miettiä, miten sillä sais sen oikean lottorivin arvottua :)
Se on hyvinkin satunnainen. Ohjelmakoodissa on yksi rivi, jota en selitä videolla, nimittäin käsky Randomize. Se varmistaa, että arvottava satunnaisluku on hyvin satunnainen, koska arvontaan tarvittava ns. siemenluku otetaan koneen kellonajasta hyvinkin tarkasti, jolloin eri kerroilla se on varmasti eri.
pseudo random number muodostetaan matemaattisilla operaatioilla siemenluvusta yhdistämällä luvun muodostamiseen kohinaa saadaan parempi lopputulos. @@Opettajanmies
Pienellä harjoittelulla saisit varmaan jo ekan ohjelman tehtyä, mutta jos ohjelmoinnista ei ole mitään käsitystä niin kieltämättä ilman apua alkuun pääseminen voi olla hankalaa. Tein tuon esimerkkiohjelman jokaisessa Windows-koneesta valmiina olevalla Visual Basic Script - ohjelmalla. Se on meikäläiselle sopivan simppeli ja tuttu
Mielenkiintoinen video taas kerran, kiitos! Basic oli käytössä Commodore 64:n kanssa kauan sitten. Kuusnelosella sai myös helposti tehtyä ihan teksti-TV:n sivun näköisen jutun. Tein kerran lankku telkkariin liitettynä sivun, joka kertoi Veltto Virtasen voittaneen presidenttivaalit ja panin vain television kiinni. Aamulla kun naisystäväni avasi telkun, niin oli hänellä ihmettelemistä siinä, että Veltosta tuli presidentti. Koodaajana olin huono. Pikkuohjelmia tein ja tosiaan huomasin, että niissä oli aina virheitä. Tajusin lopettaa koodarin urani heti alun jälkeen.
😁
Taisin olla 10 vuotta kun sain Sinclair ZX Spectrum tietokoneen. Sillä oli kiva tehdä pieniä basic-ohjelmia. Silloin oli huhuja, jonka mukaan tietokoneen satunnaislukugeneraattori suosii ykköstä vai oliko nollaa. En tiedä pitikö paikkansa. Lopulta kone taisi kuumeta ja hajota, kun jätin sen yötämyöten laskemaan lottorivejä. Jos vielä osaisin koodata, olisi kiva erilaisilla arvontakoodeilla testata käytännössä mikä on todennäköisyys. Tarkoitan että laittaisi koneen toistamaan koodia 100 miljoonaa kertaa ja tilastosta selviäisi onko tietokone täydellinen, vai onko koodissa pyöristysvirheitä yms. Oikea lottokone ei voi ikinä olla absoluuttisen satunnainen, koska pallojen paino ja kitka vaihtelevat. Mekaniikka myös takkuillut ja onhan sinne jäänyt palloja jumiin. Kahta samaa numeroa se ei kyllä anna.
Minunkin ensimmäinen oma koneeni oli Sinclair ZX Spectrum, sillä tuli kaikenlaista lukiolaisena koodailtua😀
kiitos videosta! Tekisitkö video abitin kaavaeditorin käytöstä
Hyvä video ja kiva että Visual Basic on vielä käytössä
Joo, tein ekat koodit sillä tietokoneelle 1979😉
Kohdassa 9:02 näkyy kuudes ja seitsemäs numero molemmat 25 eli koodiin tarvitaan if-lausekerakenne tarkistamaan, ettei satunnaisesti tule samoja numeroita ja jos tulee, niin arpoo uudelleen.
Näin on. Koko ohjelman rakenne kannattaisi tehdä uusiksi siten, että numerot arvottaisiin yhdessä silmukassa ja aina heti kun uusi numero arvotaan, tarkistettaisiin ettei se ole edellisten arvottujen joukossa.
Kerran kone meni rikkiin ja oli liuta voittoja elik Ratia ilmiö tai mikäs oli mimmin nimi silloin
Heräsi kysymys että onko tuossa arvontasysteemissä korjattuna jokaisen numeron todennäköisyys sama?
kaikki saattaa muuttua ku joitain laskentoja muutetaan. Ja mistä sitä tietää, vaikka randomgeneraattori arpoisi oikeat numerot, mutta koodi lisääkin arpaonnen päälle jokaiseen +1, jolloin saa seittemän numeroa oikean voittorivin yläpuolelle.
Eikös tuossa korjatussa versiossa voi tulla nyt luku 41? Jos kone arpoo vaikka luvun 0,99, niin se pyöristyy ykköseen ja sitten se kerrotaan 40:llä ja siihen lisätään vielä +1
Korjaan vastaustani (sattui sama virhe kuin alkuperäisellä koodaajalla). The Int function returns the integer part of a specified number. Eli tuo taitaa pyöristää luvun aina alempaan kokonaislukuun.
@@JK-gn5jr Joo näin in. Jos ottaa int(12.77), niin siitä tulee 12 eikä 13, kuten voisi ehkä luulla
@@Opettajanmies Alkuperäisessä koodissa oli sitten ongelma myös, että numeroa 40 ei voinut tulla. Mutta nyt onneks voi. Seuraavaksi pitäis miettiä, miten sillä sais sen oikean lottorivin arvottua :)
@@jonnanieminen8848 niinpä, toivottavasti kukaan ei luule että näillä riveillä olisi jotenkin paremmat mahdollisuudet voittaa 😀
Kuinka satunnainen on generaattorisi luku?
Se on hyvinkin satunnainen. Ohjelmakoodissa on yksi rivi, jota en selitä videolla, nimittäin käsky Randomize. Se varmistaa, että arvottava satunnaisluku on hyvin satunnainen, koska arvontaan tarvittava ns. siemenluku otetaan koneen kellonajasta hyvinkin tarkasti, jolloin eri kerroilla se on varmasti eri.
pseudo random number muodostetaan matemaattisilla operaatioilla siemenluvusta
yhdistämällä luvun muodostamiseen kohinaa saadaan parempi lopputulos.
@@Opettajanmies
Huomenta opettajalle.
Hyvää iltaa 😃
En jummarra mitään noista, joten jos joutuisin tuollaista väsäämään virhe olisi sitä luokkaa ettei koko ohjelma toimisi 😂
Pienellä harjoittelulla saisit varmaan jo ekan ohjelman tehtyä, mutta jos ohjelmoinnista ei ole mitään käsitystä niin kieltämättä ilman apua alkuun pääseminen voi olla hankalaa. Tein tuon esimerkkiohjelman jokaisessa Windows-koneesta valmiina olevalla Visual Basic Script - ohjelmalla. Se on meikäläiselle sopivan simppeli ja tuttu