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

321

    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. Hallitus pyrkii rajoittamaan kaupan omien halpamerkkien myyntiä

      Helsingin Sanomien mukaan hallitus valmistelee lakihanketta, joka suitsii kaupan valtaa ja rajoittaa omien halpamerkkien
      Yhteiskunta
      249
      3770
    2. Tapettu

      On joku kangaskadulla perjantaina
      Sotkamo
      58
      3593
    3. Björn Wahlroos, maataloustuet lakkautettava

      Sanoo pankkimies. Mitäs persut ja muut tukinulliem perskärpäset tähän? "Wahlroos listaa kansallisen maataloustuen. – I
      Maailman menoa
      99
      2962
    4. Persut päättivät hiilivoiman kieltämisestä Suomessa

      Moni on jo unohanut kuka hyväksyi hiilivoimaloiden kieltämisen Suomessa: persut Sukupuolineutraalit liikennemerkitk
      Maailman menoa
      55
      2709
    5. Työvoimatoimisto

      Nyt kysyisin miksi pitää käydä työvoimatoimistossa paikanpäällä, kun he eivät muuta tee kuin laittavat koneelle uudet ve
      Työttömyys
      125
      2519
    6. Nalle Wahlroos ei ulise kuten Teemu Selänne sähkölaskuista

      Nalle "hah hah" nauroi saamistaan sähkötuista, kun taas Teemu-poika itkeä tirautti kovasta sähkön hinnasta. Nalle nauro
      Maailman menoa
      35
      2102
    7. Muistattekos kuinka kokoomus ja persut vinkuivat sähkön hinnasta?

      Oppositiossa vuonna 2022, kun sähkön hinta uhkasi nousta 20 senttiin kilowattitunnilta? Nyt ovat hiiren hiljaa, kun pitä
      Maailman menoa
      101
      2041
    8. Vain persut vastustivat hiilivoimaloiden alasajoa

      Persut vastusti jyrkästi hiilen kieltolakia ja on myöhemmin vaatinut hiilivoimaloiden pitämistä käytössä. He perusteliva
      Maailman menoa
      44
      1901
    9. Mikä aate kaiken pahan takana?

      Se laiskistuttaa kansat, opettaa vaatimaan etuisuuksia, syleilee maailmoja eikä omaa kansaa.
      Maailman menoa
      116
      1861
    10. Mietin sua liikaa

      Mietin nytkin sitä, että millaista se olisi tulla kotiin, kun sinä olisit täällä vastassa. Tai niin päin, että sinä tuli
      Ikävä
      71
      1219
    Aihe