Kezdőoldal » Közoktatás, tanfolyamok » Házifeladat kérdések » Hogyan lehet C#-ben megoldani,...

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.

2014. szept. 30. 14:23
Hasznos számodra ez a válasz?

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!