JavaScript ja satunnaisluvun arpominen

Anonyymi

Tässä on JavaScript pätkä joka arpoo satunnaisluvun, arpooko se väliltä 1-3 vai 0-3. Ja miten saan ihan itse testattua tuon mitä se tekee.

var text;
var x = Math.floor(Math.random() * 3);
switch(x) {
case 1: text = "Satunnaisluku 1"; break;
case 2: text = "Satunnaisluku 2"; break;
case 3: text = "Satunnaisluku 3"; break;
default:text = "Satunnaisluku 0";
}

13

307

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Anonyymi

      Kauankohan menisi aikaa neljä miljardin kierroksen while silmukassa.

      t. ap.

    • Anonyymi

      https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random

      Luku tulee väliltä 0-2, sillä Math.random() antaa luvun väliltä [0, 1), joten kokonaisosa jää aina alle kolmen. Luvut 0, 1 ja 2 taas ovat kaikki mahdollisia ja yhtä todennäköisiä (Math.random() tasajakautunut). Periaatteessa, vaikka 1 olisikin Math.random():n mahdollinen arvo, olisi sen todennäköisyys 0, jos ajatellaan Math.random():n noudattavan tasajakaumaa.

      Helpoiten saat testattua syöttämällä koodin konsoliin. Mihin sinä muuten tuota text:iä
      ja switch:iä tuossa tarvitset? Testiä varten vain tulosta luku x konsoliin koodilla

      console.log(x);

      Ja sen tekstinkin saat näppärämmin näin (pistetään nyt toString() varmuuden vuoksi vaikka sitä ei tarvitsisi :D ):

      var text = "Satunnaisluku " x.toString();

      • Anonyymi

        var text;
        console.log(Math.floor(Math.random() * 2));

        Arpoo 0 ja 1


      • Anonyymi
        Anonyymi kirjoitti:

        var text;
        console.log(Math.floor(Math.random() * 2));

        Arpoo 0 ja 1

        ei tarvita var text; riviä


    • Anonyymi

      Tee tuosta funktio näin:

      var munRandom = () => Math.floor(Math.random()*3);

      niin on helpompi testailla. Laita vaikka listaan 100 randomia ja kunkin luvun lukumäärä:

      var n = 100;
      var data = new Array(n).fill(0).map(munRandom);
      var maarat = [0,1,2].map(k=>data.filter(x=>x===k).length);
      console.log(maarat);

      • Anonyymi

        Kovastipa se näyttää helposti ymmärrettävältä, mutta toimii.


    • Anonyymi
      • Anonyymi

        Onko tässä nyt kysymys muuttujan näkyvyysalueen laajuudesta, var muuttuja on paikallinen ja let globaali.


      • Anonyymi
        Anonyymi kirjoitti:

        Onko tässä nyt kysymys muuttujan näkyvyysalueen laajuudesta, var muuttuja on paikallinen ja let globaali.

        Joo, mutta toiste perin: var on 'globaali' tai siis funktio-skoopissa globaali tai miten se nyt sanotaan, siis jos sulla on funktio, niin var:illa määritelty näkyy siellä kaikkialla.

        Ite käytän varria sillon jos pitää vaan nopeesti konsolissa jotain juttua kokeilla. Sen voi laittaa uudestaan saman koodin kun sitä korjailee, kun var ei välitä vaikka olisi ennenkin määritelty.


    • Anonyymi

      Jos et laita alkuun random-generaattorin siemenlukua josta se aloittaa, aloittaa aina samasta, jolloin tulee samoja lukuja aina peräkkäin kun olet käynnistänyt tietokoneen uudelleen ja ajat tuon ohjelman.

      Eli pitää synkronoida aikaan tavallaan tuo satunnaislukugeneraattori, C-kielessä on tuollainen srand(TIME); joku vastaava funktio on varmasti JAVA:ssakin.
      c:ssä srand() ja raqnd(), itse käytän aivan omaa satunnaislukugeneraattoriani en noita valmiita.

      • Anonyymi

        Laittaisihan sitä vaikka mitä siemeniä kun osaisi.


    • Anonyymi

      Ymmärrät varmastikin mitä tarkoitan, että ei ole kovinnaisia=kovin satunnaisia ne luvut jos aina tietokoneen käynnistyttyä se alkaa arpomaan samojqa lukuja.

      Mekaanisen randomlukugeneraattorin saa helposti tehtyä näin: kaada näppäimistön päälle kupillinen juomaa, ala sen jälkeen painelemaan numeronäppäimiä, kokeillen mitä tulee.

      Ehkä parempi ottaa random jostain digitoidusta lähteestä, vaikka web-kameran kuvasta joka kuvaa ulkopuolelle jollain algoritmilla laskemalla liikkuvasta kuvasta numeroita.

      • Anonyymi

        Tämä on jo kokeiltu.


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Maatalous- ja yritystuet pois, työeläkevaroilla valtion velka pois

      Suomi saadaan eheytettyä kädenkäänteessä, kun uskalletaan tehdä rohkeita ratkaisuja. Maatalous- ja yritystuet ovat hait
      Maailman menoa
      130
      3787
    2. Hei! Halusin vain kertoa.

      En tiedä luetko näitä, mutta näimme n.4vk sitten, vaihdoimme muutaman sanan ja tunsin edelleen kipinän välillämme. Katso
      Tunteet
      8
      3019
    3. Riikka on siis suomalaisille velkaa 84 mrd

      Jos kauhukabinetti istuu vaalikauden loppuun. Keskimäärin yli 20 miljardia uutta velkaa rikkaiden veronalennuksiin jokai
      Maailman menoa
      31
      2819
    4. Miksi ikävä ei helpotu vuosien jälkeenkään?

      Tänään olin ensimmäistä kertaa sinun lähtösi jälkeen tilassa, jossa vuosia sitten nähtiin ensimmäistä kerta. Ollessani
      Rakkaus ja rakastaminen
      12
      2532
    5. Sanna on suomalaisille siis velkaa 24 mrd euroa

      Muistanette vielä kuinka Italian remonttirahoja perusteltiin sillä, että italialaiset ostaa suomalaisilta paidatkin pääl
      Maailman menoa
      132
      2393
    6. Teboili alasajo on alkanut

      Niinhän siinä kävi että teebboili loppuu...
      Suomussalmi
      40
      1806
    7. Tiesitkö? Suomessa lääkäri voi toimia ammatissaan, vaikka hän olisi seksuaalirikollinen

      Järkyttävää… Motin mukaan Suomessa lääkäri voi toimia ammatissaan, vaikka hän olisi yksityiselämässään syyllistynyt es
      Maailman menoa
      61
      1165
    8. "Sanna Marinin kirja floppasi", kertoo eräs median otsikko

      "Miljardien tappio - Sanna Marin vaikenee", kertoo toinen otsikko. Marin ei siis siinä kirjassaan kerro sanallakaan For
      Maailman menoa
      82
      1099
    9. Oot kyl rakas

      Et tiiäkkään miten suuri vaikutus sulla on mun jaksamiseen niin töissä, kun vapaallakin❤️. Oot täysin korvaamaton. En t
      Ikävä
      36
      1060
    10. Kirjoittaisit edes jotain josta tiedän

      Varmasti oletko se oikeasti sinä. Tänään tälläinen olo. 🫩
      Ikävä
      76
      1050
    Aihe