Hogyan lehet C#-ben megoldani, hogy véletlenszám generáláskor egy bizonyos szám megadott valószínűséggel forduljon elő?
Figyelt kérdés
#Visual C# #véletlenszámgenerálás
2014. szept. 29. 21:17
1/1 bongolo válasza:
Hány számod van? Nem mindegy.
Ha kevés:
Mondjuk azt akarod, hogy az 1 legyen 10%-ban, 2 legyen 40%-ban, 3 meg 50%-ban. Akkor csinálhatsz egy Next(100) hívást, és ha 0..9 jön ki, akkor abból 1-et csinálsz, ha 10..49, akkor 2-t, ha meg 50..99, akkor 3-at.
Ha sok szám van, pontosabban ha folytonos eloszlást akrsz:
Akkor az eloszlás inverzével kell transzformálni a NextDouble()-ből kijövő számot.
Mondjuk ha exponenciális eloszlást akarsz generálni, akkor az eloszlásfüggvény y = F(x) = 1-e^(-λx), aminek az inverze ez:
x = Q(y) = -1/λ · ln(1-y)
Vagyis a random Y számnak (vagy az 1 mínusz Y-nak, de ez tök mindegy, mert az is ugyanúgy random) veszed a természetes logaritmusát és osztod -λ-val. Ami így kijön, az exponenciális eloszlású λ paraméterrel.
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
A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!