Permalänk

Räkna sannolikheter i c#?

Hej! Jag håller på med ett program där jag behöver räkna ut sannolikhet för att få gå med i en klubb. T.ex. ska sannolikheten för att få gå med i klubben Alpha vara 5%, för Omega 20% och för Monsters 75%. Ungefär hur jag tänkt att det kan se ut:

public bool JoinClub() int ran = random.Next(0,100); { if(ran < 5) { // du går med i Alpha } else if(ran >=5 && ran <= 24) { // du går med i Omega } else if(ran >= 25 && ran <= 99) { // du går med i Monsters } }

Det jag sitter och funderar på är om siffrorna ser rätt ut. Har kikat på hur andra gjort och sett att för t.ex. 5% skriver man if(ran>=95). Hur brukar man göra detta i C#, generellt?

Permalänk
Medlem

Den testar IF i ordning, du måste alltså inte ha med den undre gränsen på mitten och sista (förutsatt att man alltid blir tilldelad en) kan bara vara en normal else sist.
If <=5
Else if <=25
Else

Men annars så din kod bör funka som den är, bara lite renare imo.

Edit:
Random.next behöver inte specificera 0 utan vid random.next(100) antas den börja där iaf.

Visa signatur

"One is always considered mad, when one discovers something that others cannot grasp."
- Ed Wood

Permalänk
Skrivet av Ferrat:

Den testar IF i ordning, du måste alltså inte ha med den undre gränsen på mitten och sista (förutsatt att man alltid blir tilldelad en) kan bara vara en normal else sist.
If <=5
Else if <=25
Else

Men annars så din kod bör funka som den är, bara lite renare imo.

Edit:
Random.next behöver inte specificera 0 utan vid random.next(100) antas den börja där iaf.

Då förstår jag. Men om det är inkl 0, är det inte då < 5? Tänker 0,1,2,3,4 är ju 5. Om man sätter <= 5, blir det inte 6 tal då? 0 1 2 3 4 5

Permalänk
Medlem
Skrivet av Elliedoso:

Då förstår jag. Men om det är inkl 0, är det inte då < 5? Tänker 0,1,2,3,4 är ju 5. Om man sätter <= 5, blir det inte 6 tal då? 0 1 2 3 4 5

Jo det stämmer, miss av mig ^^

Visa signatur

"One is always considered mad, when one discovers something that others cannot grasp."
- Ed Wood

Permalänk
Medlem

Du gör som jag skulle gjort. Tycker det är tydligare med <5 än >=95. Då har man ju procentsatsen i IF-satsen.

Men skippa ELSE helt o hållet, de fyller ingen funktion. Trenden just nu är att ALDRIG använda en else-sats i programmering. Finns långa resonemang om varför på nätet.

Visa signatur

Processor: Motorola 68000 | Klockfrekvens: 7,09 Mhz (PAL) | Minne: 256 kB ROM / 512 kB RAM | Bussbredd: 24 bit | Joystick: Tac2 | Operativsystem: Amiga OS 1.3

Permalänk
Skrivet av talonmas:

Du gör som jag skulle gjort. Tycker det är tydligare med <5 än >=95. Då har man ju procentsatsen i IF-satsen.

Men skippa ELSE helt o hållet, de fyller ingen funktion. Trenden just nu är att ALDRIG använda en else-sats i programmering. Finns långa resonemang om varför på nätet.

Där ser man! Jag hade ENBART if-satser till en början, och sen var det någon på StackOverflow som tyckte det såg dumt ut och tyckte att jag skulle ha else if. Haha