„Ekseliu“ mėtau kauliuką…

excel_kauliukas

Atverkite šį failą ir pastudijuokite, kaip tai padaryta:

Pastebėkite, kad kaskart ką nors pakeltus lape, progama automatiškai pateikia kitą „metimų“ seriją.

Atsakymai

Marius, 2010-11-18 14:36:24

Pastudijavau 😉

Naudojama standartinė RAND() funkcija.

Po to – didelis IF’as, kuris atsitiktinį realųjį skaičių iš intervalo (0;1] paverčia į natūrinį skaičių iš intervalo [1..6].

Tačiau, jei reikėtų kauliuko 1..10 (toks naudojamas “Dungeons and Dragons” žaidimuose), ar 1..36 (“Sportloto”), ar dar didesnio – toks algoritmas taptų beveik neįmanomas dėl IF’o sudėtingumo.

Todėl C3 celėje parašykite formulę:

=TRUNC(B3*6;0)+1

Vietoje 6 galite parašyti kokią norite reikšmę – 12, 36, 49 ar kokią kitą, “keliabriaunis” yra kauliukas.

Pastebėkite, kad kaskart ką nors pakeltus lape, progama automatiškai pateikia kitą „metimų“ seriją.

Deja, ne visada, o tik tada, kai įjungtas automatinis formulių skaičiavimas. Jei jis išjungtas – reikia F9 paspausti kaskart, norint perskaičiuoti 😉

Marius, 2010-11-18 14:39:03

P.S. Atsiprašau, RAND() generuoja realų skaičių iš intervalo [0;1) – t.y. nulis galimas, vienetas – ne, tik priartėjama prie jo.

Nepasitikrinau, rašydamas 😉

Burgis, 2010-11-18 14:41:54

Ačiū, Gerb. Mariau, nuostabus papildymas!

AED, 2010-11-18 14:42:34

O gal papraščiau tiesiog =RAND()*6+0 ir suspaudžiam stulpelį kad automatiškai apvalintų? 🙂

apb, 2010-11-18 14:59:04

Paprastesnis kauliuko imitatorius:

=INT(RAND()*(max-min)+min) +1, kur max – didžiausias kauliuko akių skaičius, min – mažiausias kauliuko akių skaičius.

Marius, 2010-11-18 15:05:06

Tada dar papildysiu uždavinį studentams, jei galima 😉

Tikimybėms analizuoti gali būti naudinga matyti, kaip pasiskirsto iškritusios reikšmės. Didėjant lentelės eilučių skaičiui, atsitiktinumo faktorius turėtų mažėti, ir visoms 6 reikšmėms iškristi turėtų vienodas kauliukų skaičius.

Sukurkite tame pačiame Excel lape lentelę iš 6 eilučių, kurioje kaskart būtų suskaičiuojama, kiek šiuo metu yra iškritę “vienetukų”, “dvejetukų” ir t.t.

Kokia formulė būtų įrašyta, tarkim, iškritusių 3-tukų suskaičiavimui?

Marius, 2010-11-18 15:25:35

apb: Jūsų formulė klaidinga. Įrašiau:

=INT(B3*(6-1)+1) +1

Vienetas neiškrenta niekada, pasiskirstymas neteisingas.

Turėtų, lygtai, būti taip:

=INT(RAND()*(max-min+1)+min)

kai min=1, o max=6, tai formulė pavirsta mano minėtaja, nes TRUNC(X;0) veikia taip pat, kaip INT(X).

apb, 2010-11-18 15:34:00

Taip, Mariau, Jūs esate teisus. Atsiprašau, tačiau pasimečiau savo min ir max žymėjimuose, mano “kauliuke” buvo surašyti skaičiukai ir, perrašydamas formulę, paklydau loginėje sekoje 🙂

VYTS, 2010-11-18 18:14:29

=COUNTIF(A:A,”=3″)

VYTS, 2010-11-18 18:16:53

Tiksliau

=COUNTIF(C:C,“=3″)

šiuo atveju

Burgis, 2010-11-19 09:42:42

Ačiū, jūs šaunuoliai!

Jonas, 2010-11-20 09:48:28

Manau, kad paprasčiausia =RANDBETWEEN(1,6) daro tai, ko jum reikia :))

mdalius, 2010-11-20 11:35:44

Kiek daug variantų tam pačiam uždaviniui.

Dabar būtų gerai pasiaiškinti, kurį greičiau apskaičiuoja, kai reikšmių yra tikrai daug 🙂

VYTS, 2010-11-20 15:38:13

“Manau, kad paprasčiausia =RANDBETWEEN(1,6) daro tai, ko jum reikia :))”

Matyt tik naujose versijose yra tokia funkcija (pas mane nėra).