7.2 Winst of verlies bij 3 x 6
Hoe lang duurt het om 3 x 6 te gooien met dobbelstenen?
Iemand biedt stelt jou het volgende voor? Jij betaalt 1 euro voor elke worp met drie dobbelstenen en als je 18 gooit dan krijg je 150 euro. Je mag dit zo vaak doen als je wilt. Stel je betaald 100 euro en gooit 100 keer. Wat verdien je dan? Of verlies je, en zo ja hoeveel?
$ogen = gooi($n)
Maak een functie gooi($n) waarbij n het aantal dobbelstenen is waarmee je gaat gooien en de functie returned het totaal aantal ogen dat je gooit. Gebruik de rand() functie van php om een dobbelsteen na te doen.
$gewonnen = wedden($aantalworpen, $winstbij, $winst)
Maak een functie wedden($aantalworpen, $winstbij, $winst) waarbij je het aantal keer dat je gooit, de gewenste uitkomst en de uitbetaling meegeeft. Bijvoorbeeld als je wilt weten hoeveel geld je krijgt als 1000 keer gooit en 100 euro krijgt als je 18 hebt gegooid dan roep je de functie als volgt aan: wedden(1000, 18, 100). De computer 'gooit' nu 1000 keer en elke keer als er 18 wordt gegooid dan 'verdien' je 150 Euro. De return value is de hoeveelheid geld dit je hebt verdient, bijvoorbeeld 1200 euro.
En bij welke winstuitkering zou jij deze weddenschap willen aangaan?
Opdracht
Lever een .php file in met de functie wedden. Spring netjes in!
Video uitleg over functies: https://youtu.be/XfnH3AEF5Z8
Video uitleg over stap 1 en 2 van deze opdracht: https://youtu.be/xyxGQMVXteY
Stap 1
Maak een de functie gooi($n).
parameter $n is het aantal dobbelstenen
return value: totaal aantal ogen van de $n dobbelstenen
De functie gooit dus met drie dobbelstenen (of met één dobbelsteen drie maal) en geeft het totaal aantal ogen terug.
(note: de return value is de waarde die met return() door een functie wordt teruggegeven)
Voorbeelden
echo gooi(1); // dit drukt 1, of 2, of 3, .. , of 6 af.
$a=2; echo gooi($a); // dit drukt 2, of 3, of 4, of 5, ...., of 12 af.
$b= gooi(3); echo $b; // dit drukt 3, of 4, of 5, of, ......, of 18 af.
Tip: Gebruik de PHP rand() functie om een willekeurig getal tussen de 1 en de 6 te bedenken (https://www.w3schools.com/php/func_math_rand.asp). Op die manier maak je een 'elektronische' dobbelsteen.
In https://youtu.be/xyxGQMVXteY wordt stap 1 en stap 2 nog ene keer uitgelegd.
Stap 2
Gebruik de variabele $aantalworpen en geef deze de waarde 100. Gooi vervolgens $aantalworpen keer en druk telkens af hoeveel de uitkomst van de worp is.
$aantalworpen = 100;
// voer deze code $aantalworpen keer uit
echo "De uitkomst van een worp met 3 dobbelstenen is: ".gooi(3);
Tip: zorg er eerst voor dat regel 4 (de regel die met echo begint) 100x wordt uitgevoerd. Maak daarna de code, zodat regel 4 $aantalworpen keer wordt uitgevoerd.
Stap 3
(a) Verander de code uit stap 2, zodat je alleen de echo regel afdrukt als je 18 hebt gegooid.
(b) Houd in een aparte teller ($wins) bij hoeveel keer je 18 hebt gegooid.
(c) Druk aan het eind van je code af hoeveel keer je hebt 'gewonnen':
echo "Je hebt $wins keer gewonnen.";
(d) Maak nu een nieuw variabele en zet die boven aan in je main code. De main code is alle code die niet in de functie staat. Noem deze variabele $winsPerKeer en zet daar 100 in. Dit betekent dat telkens als je 18 gooit, je $winsPerKeer Euro wint; in dit geval dus 100.
(e) Verander nu de regel die je bij stap (c) hebt toegevoegd en zet daarbij hoeveel euro je gewonnen hebt.
De output ziet er afhankelijk van hoe vaak je hebt gewonnen, als volgt uit:
De uitkomst van een worp met 3 dobbelstenen is: 18
De uitkomst van een worp met 3 dobbelstenen is: 18
De uitkomst van een worp met 3 dobbelstenen is: 18
Je hebt 300 euro keer gewonnen.
Stap 4
a) maak nu van de 18, dat is het aantal ogen waarbij je winst, een variabele. Noem deze $winstbij.
b) Maak nu van de code die (nog) niet in de functie staat een de functie:
wedden($aantalworpen, $winstbij, $winstPerKeer);
De functie returned het gewonnen bedrag (in het voorbeeld hierboven de 300).
--
--