Kezdőoldal » Számítástechnika » Programozás » Az "esély" megírása, de hogyan?

Az "esély" megírása, de hogyan?

Figyelt kérdés

Igen, szeretek tanulni, nem vagyok kíváncsi a buta és értelmetlen kommentekre, köszi!

Tehát adott egy dice vagy egyéb más "esélyes" játék teljesen mindegy hol/mi alatt van írva. De hogyan számoltassam ki az esélyt konkrétan?

Példának írom: Pontjáték, 10 pontra van 70% esély és 20-ra 30%. Ez mind szép és jó, de ha azt veszem alapul, hogy C#-ben (nem csak ez érdekel és nem csak ezt tanulom) csinálok egy random változót (Random rnd = new Random ...) ebben tudok generálni x-től x-ig szám alapú értéket. Oké, de ha 2 vagy 3, pl a fent említett lehetőségeket akarom csak venni? Hogyan írjak egy olyan programot, ami a megadott százalékok alapján megy végbe/fut le?


Köszönöm!



2016. jan. 16. 22:32
 1/5 anonim ***** válasza:
100%

Random 0 - 9 között,

0-6 = 10

7-9 = 20

Szóval kb a súlyozásnak nézz utána.

2016. jan. 16. 22:46
Hasznos számodra ez a válasz?
 2/5 anonim ***** válasza:

Van pár lehetőség. Leírok egyet:


maxSzazalek = 100

dobas_szazalek = random(1, maxSzazalek) // 1 és 100 közötti szám generálása a százalékhoz.


eselyHatosra = 10 // százalék

eselyOtosre = 25

eselyMasra = 65 // ki is jön a 100


if (maxSzazalek - eselyHatosra >= dobas_szazalek)

return 6

else if (maxSzazalek - eselyOtosre >= dobas_szazalek)

return 5

else

return 4 // vizsgáljuk tovább 6-tól 1-ig az eredményt a dobókockánál, ne csak 4-ig

end


Remélem a fenti szöveg tisztán érthető. A lényege, hogy generálunk egy számot 1 és 100 között, amivel eldöntjük, hogy a hány százalékos intervallumban levő számot szeretnénk visszaadni. Feltételvizsgálatnál megnézzük, hogy a maxSzazalek(100) - eselyHatosra(10) = 90 kisebb vagy egyenlő-e a generált számmal.

Az esély arra, hogy az eredmény igaz, pontosan 10 százalék. Ha hamis, akkor megnézni az ötösre teljesül-e az eredményt. Remélem érhető.


Természetesen nem ez a legelegánsabb megoldás, de eléggé egyszerű, még ha nem is a legegyszerűbb.

2016. jan. 16. 22:54
Hasznos számodra ez a válasz?
 3/5 anonim ***** válasza:
75%

class Program

{

static void Main(string[] args)

{

Random rnd = new Random();

int pont = 0;


for (int i = 0; i < 10; ++i)

{

double esely = rnd.NextDouble();

if (esely <= 0.7)

{

pont += 10;

Console.WriteLine("10 pontot kaptal");

}

else if (esely <= 1.0)

{

pont += 20;

Console.WriteLine("20 pontot kaptal");

}

}

Console.WriteLine("Osszes pontod: " + pont);

Console.ReadKey();

}

}

2016. jan. 16. 22:55
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:

Bocsánat. 2-es vagyok. Az operátorokat elírtam. Nem >=, hanem <= kell oda, mivel

(maxSzazalek - eselyHatosra <= dobas_szazalek) lesz a 90 <= dobas_szazalek. Így fog jól működni.

2016. jan. 16. 22:57
Hasznos számodra ez a válasz?
 5/5 A kérdező kommentje:

Igen azt észrevettem! Megköszönni meg én felejtettem el!

Köszönöm a segítséget, mentek a plusszok!

2016. jan. 21. 06:49

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!