C-ben hogy tudok 0 és 6 közötti számot véletlenszerűen generálni?
int n;
srand(time(0));
n = rand()%7;
# 4 jó, ennyire azért nem értek a valszámhoz :D
arra gondoltam, hogy a rand() eredménye az 0-tól csak 32767-ig garantált, de igazából ki tudja, hogy mennyi, és emiatt lehet, hogy valamelyik szám egy kicsivel többször jön ki
Ez ok, de neki 0-tól 6 ig kellenek a számok, a különbség olyan elenyésző ebben az esetben, hogy ha már ezt a random függvényt használja, akkor sztem tökmindegy.
Más lenne a helyzet, ha 0-tól 30000-ig kéne szám, ekkor a 768tól kisebb számok 2x akkora valószínűséggel jönnének ki. (És ez is csak a legrosszabb esetben, amikor a RAND_MAX értéke a szabványban szereplő minimum)
0-6 esetén egyik szám 4681x, másik 4682x jön ki átlagosan, ezt észre nem lehet venni, persze tény, hogy igaz amit írsz, de nem ez a legnagyobb probléma, hanem az, hogy ez nem igazi véletlen szám. De ha jól sejtem a kérdezőnek ez pont elég így.
Akkor hívd meg ezt:
És máris kapsz igazi véletlen számokat. Ebben mi nem hordozható? Csak internet kell hozzá.
# 6 "ezt észre nem lehet venni"
és ha orosz rulett programot ír? az élete múlhat rajtunk...
ha a netről szedi, az egyrészt lassú, függ az internet sebességtől, függ a random.org rendelkezésre állásától, szerver terheléstől, az ő kapcsolatuk sebességétől
és nem biztonságos, a hálózaton bárki lehallgathatja, módosíthatja
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!