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

336

    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. Kansalla on oikeus tietää miksi persut pettävät

      Koko kulunut hallituskausi on kysytty persuilta, minkä vuoksi he ovat pettäneet käytännössä jokaisen vaalilupauksen, ain
      Maailman menoa
      233
      9160
    2. Venäjän armeijan evp-upseeri: Armeija surkeassa tilassa, jonka läpäisee kaiken kattava

      valehtelu. Venäläiset alkaneet pohtia julkisesti maan todellisia tappioita. Z-bloggari ja 3. luokan kapteeni (evp.) Mak
      Maailman menoa
      148
      3340
    3. Kunnissa - siis myös kaupungeissa - viihtyvät ovat kommunisteja

      Nehän ovat osa yhteiskunnan tuottamia instansseja, joista on vain haittaa veronmaksajille ja yrittäjlle, kuten ollaan ve
      Kommunismi
      3
      2760
    4. Minkälaisen viestin

      Laittaisit ikävöinnin kohteelle, jos rohkenisit?
      Ikävä
      170
      2242
    5. Kansalla on oikeus tietää mikä on SDP:n talousohjelma jolla maan talous

      saadaan nousuun? Miksi puolue piilottelee sitä, vai eikö sitä ole? Tähän asti olemme vaan saaneet kuulla hallituksen ha
      Maailman menoa
      103
      1881
    6. Ammattiliitto 900 euroa/vuosi - Työttömyyskassa 72 euroa/vuosi

      Ammattiliitosta eroamalla voi säästää jopa 800 euroa vuodessa. Mitä enemmän tienaat, sitä enemmän maksat liitolle. Esim
      Maailman menoa
      174
      1806
    7. Miten voit olla niin tyhmä

      että et tajunnut että sua vedätettiin? Tietäisitpä miten hyvät naurut on saatu. Naiselle
      Tunteet
      181
      1696
    8. Missä vaiheessa

      Päätit irl luovuttaa minun suhteeni?
      Ikävä
      139
      1361
    9. SDP todellisuudessa pahin pettäjä koskaan - se syyllistyi valtiopetokseen 1918

      kun aloittivat kapinan maan laillista valtiojärjestystä vastaan. Punaiset saivat tukea Neuvosto-Venäjän bolsevikeilta,
      Maailman menoa
      60
      1347
    10. Iski taas katumus kun en jutellut sun kanssa

      Silloin kun halusit. Mutta en enää voi sille mitään, en saa muutettua sitä hetkeä..
      Ikävä
      116
      1119
    Aihe