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).