| Programmieraufgaben Hier wird regelmäßig eine neue Programmieraufgabe gestellt, die dann gelöst werden soll und in Zusammenarbeit mit den Moderatoren auch besprochen werden kann. |
Diskussion: Glückspielvorteil im Forum Programmieraufgaben, in der Kategorie Code Kitchen; Anzeige Und hier noch meine VB Lösung zur Fragestellung der Simulation. Ich lasse das ganze 1 Mio. mal durchlaufen, was ...
![]() |
| | #31 (permalink) |
| Registriert seit: 10.11.10 ![]() Likes: 0 | Anzeige Und hier noch meine VB Lösung zur Fragestellung der Simulation. Ich lasse das ganze 1 Mio. mal durchlaufen, was zu einem Durchschnitt zwischen ~10,49 und ~10,51 führt => SP1 gewinnt ~500k. Bei 10 Mio. Durchläufen liegt es dann ziemlich genau bei 10,50 (~10,499) => SP1 gewinnt ~5 Mio. Hätte ich anfangs nicht gedacht. Als ich dann aber an ein Brettspiel dachte ("Die Siedler von Catan"), konnte ich es sehr gut nachvollziehen, da man, wenn man dies spielt, die Erfahrung macht, dass die 7 die häufigste Zahl ist, die gewürfelt wird (man spielt es mit 2 Würfeln). Hälfte von 7 = 3,5 => 3x3,5 = 10,50. Simulation in VB PS: Entschuldigt, wenn ich nach einander die alten Threads ausgrabe, aber ich habe diese Forum erst vor paar Wochen entdeckt und erfreue mich einfach an Euren Aufgaben. |
| | |
| | #32 (permalink) | |
| Moderator ![]() Registriert seit: 11.02.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 229 | Zitat:
Aber nen Fleißsternchen gibt's nicht... | |
| | |
| | #33 (permalink) |
| Habs zwar nicht ausprogrammiert - obwohl extra darauf hingewiesen wird - sorry deswegen; hier gibts schon einige programmiertechnische Lösungswege und einer davon wäre auch mein Ansatz, also machts von dem her glaub ich keinen Unterschied. Ein Dank an mein Vorredner - hättest du diesen Thread durch deine Antwort nicht hochgepusht, wäre ich nicht dazu gekommen =D MfG | |
| | |
| | #34 (permalink) |
| Hallo zusammen, nachdem mir Aktuell die Finger Jucken und ich wieder bissle was Programmieren will bin ich gerade dabei mich an der zweiten Thread Leiche zu vergehen (die Dritte kuck ich mir schon an) Spontan hätte ich gesagt, Spieler B liegt im Vorteil, weil ich die Chancen mit 3 Würfel mehr als 10 zu Würfeln höher einschätze als weniger zu Würfeln. ABER, wir werden sehen ;-) Das Programm zur Lösung (wenn es nur darum geht wer im Vorteil ist) ist relativ schnell und Simpel geschrieben, ich möchte (Werde) das ganze noch mit Geld machen, bin mir aber ncoh nicht sicher wie ich das Umsetzten soll (hat spieler A jede Runde 10€ neues Startkapital, oder gibt es nur einmal 10€, je nachdem wie ich mich entscheide werde ich das ganze Programmieren.) Auf jeden Fall habe ich das ganze für die Simple Variante schon umgesetzt und dazu sieht mein Code wie folgt aus: Simulation in Powershell Code:
cls
$rand=New-ObjectSystem.Random
$SpielerA= 0
$SpielerB= 0
$Unentschieden= 0
$Runden= 10000000
$Counter= 1
$Ergebniss= 1
while ($Counter-le$Runden)
{
write-host$Counter
$Schleife= 1
while ($Schleife-le 3)
{
$Schleife++
$Würfel=$rand.next(1,6)
$Ergebniss=$Ergebniss+$Würfel
}
IF ($Ergebniss-lt 10)
{
$SpielerB++
}
ElseIF ($Ergebniss-gt 10)
{
$SpielerA++
}
Else
{
$Unentschieden++
}
$Ergebniss= 0
$Counter++
}
IF ($SpielerA-gt$SpielerB)
{
Write-Host"Spieler A ist im Vorteil"
Write-Host"Spieler A: "$SpielerA
Write-Host"Spieler B: "$SpielerB
}
ElseIF ($SpielerB-gt$SpielerA)
{
Write-Host"Spieler B ist im Vorteil"
Write-Host"Spieler A: "$SpielerA
Write-Host"Spieler B: "$SpielerB
}
Else
{
Write-Host"Unentschieden"
}
Aber Gewonnen hat *Trommelwirbel* Spieler B ist im Vorteil Spieler A: 2798223 Gewonnene Spiele Spieler B: 5761321 Gewonnene Spiele greetz chris | |
| | |
| | #35 (permalink) |
![]() Registriert seit: 17.10.09 ![]() Likes: 10 | Da ich gerade sowieso warten muss (vc++ compiler braucht etwas hier meine Lösung in Java mit Nutzung des Mittelwertes. Code: /*
* Ermitteln wieviele moegliche Kombinationen es pro Wert gibt
*/
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(); // Hier koennte man auch nen Array nehmen, (zu faul ;))
int max = 6; // bestimmt die Seiten der Wuerfel
double toPay = 10; // hier kann angegeben werden wieviel pro Spiel bezahlt wird
int count = (int) Math.pow(max, 3);
int old;
for (int i = 1; i <= max; i++) {
for (int j = 1; j <= max; j++) {
for (int j2 = 1; j2 <= max; j2++) {
old = map.get(i+j+j2)!=null?map.get(i+j+j2):0;
map.put(i+j+j2, old+1);
}
}
}
/*
* Gewichteter Mittelwert und Ergebnis bilden
*/
double avg = 0;
for (Entry<Integer, Integer> entry : map.entrySet()) {
avg += entry.getValue() * entry.getKey();
}
avg /= count*1.0;
System.out.println("Average: " + avg);
System.out.println("Average result: " + (avg - toPay)); |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |