Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Chuck-a-Luck (Simulationen)

Simuliere das Spiel Chuck-a-luck

Bei diesem Spiel bezahlt der Spieler pro Runde Euro 1.- als Einsatz.  Er darf nun nacheinander drei Würfel werfen.  Zeigt mindestens ein Würfel eine 6, so erhält  er zunächst den Einsatz zurück.
Zudem erhält er für jede geworfene 6 Euro 1.- als Gewinn ausbezahlt. Liegt keine 6, so verliert er den Einsatz.

Starten Sie mit einem Kapital von Euro 1'000.- und simulieren Sie 1000 Runden.

1 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

Kommentare (1)

hongkongfui 8. Mai 2020 08:24   reply report
Erstaunlich, wieviele die Aufgabe mißverstehen.
Es gibt nicht einfach für jede 6 einen Taler.
Für die erste 6 bekommt man ihn doppelt.

29 Lösung(en)

import java.util.Scanner;

/**
 * Simuliere das Spiel Chuck-a-luck
 * Der Spieler bezahlt CHF 1.- als Einsatz.
 * Er darf nacheinander drei Würfel werfen.
 * Zeigt mindestens ein Würfel eine 6, so erhält
 * er den Einsatz zurück.
 * Zudem erhält er für jede geworfene 6 CHF 1.- als
 * Gewinn ausbezahlt.
 * Liegt keine 6, so verliert er den Einsatz.
 * 
 * @author Philipp Gressly (phi AT gressly DOT ch)
 */
public class Chuck_A_Luck {
  public static void main(String[] args) {
    new Chuck_A_Luck().top();
  }
  void top() {
    int einsatz      = 1;
    int kapital      = einlesen("Startkapital");
    int simulationen = einlesen("Anzahl Simulationen");
    for(int s = 0; s < simulationen; s++) {
       kapital = kapital - einsatz;
       int gewinn = simuliere(einsatz);
       kapital = kapital + gewinn;
    }
    System.out.println("Es bleiben: " + kapital);
  }

  int simuliere(int einsatz) {
    int wurf1 = wirf();
    int wurf2 = wirf();
    int wurf3 = wirf();
    int anz6  = zaehleAnzahlSechser(wurf1, wurf2, wurf3);
    if(1 == anz6) return einsatz + 1;  
    if(2 == anz6) return einsatz + 2;
    if(3 == anz6) return einsatz + 3;
    else return 0; // Kein Gewinn
  }
  
  int zaehleAnzahlSechser(int wurf1, int wurf2, int wurf3) {
    int anz = 0;
    if(6 == wurf1) anz = anz + 1;
    if(6 == wurf2) anz = anz + 1;
    if(6 == wurf3) anz = anz + 1;
    return anz;
  }
  
  int wirf() {
      return (int) ((Math.random() * 6) + 1);
  }
  

  Scanner sc = new Scanner(System.in);
  int einlesen(String wert) {
    System.out.println("Bitte " + wert + " eingeben: ");
    return sc.nextInt();
  }
  
} // end of class Chuck_A_Luck
                

Lösung von: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

#!/usr/bin/ruby                                                                 
                                                                                
# @autor Philipp Gressly Freimann                                               
# 2011 März                                                                      
# Chuch-a-Luck                                                                  
                                                                                
def einlesen(wert)                                                              
  print "Bitte #{wert} eingeben:"                                               
  # Dezimalzahl (real) einlesen:                                                
  return STDIN.gets.to_f                                                        
end                                                                             
                                                                                
def simuliere(einsatz)                                                          
  wurf1 = wirf()                                                                
  wurf2 = wirf()                                                                
  wurf3 = wirf()                                                                
  anz6  = zaehleAnzahlSechser(wurf1, wurf2, wurf3)                              
  if(1 == anz6): return einsatz + 1 end                                         
  if(2 == anz6): return einsatz + 2 end                                         
  if(3 == anz6): return einsatz + 3 end                                         
  return 0 # Kein Gewinn                                                        
end                                                                             
                                                                                
def wirf()                                                                      
  return 1 + rand(6)                                                            
end                                                                             
                                                                                
def zaehleAnzahlSechser(wurf1, wurf2, wurf3)                                    
  anz = 0                                                                       
  if(6 == wurf1): anz = anz + 1 end                                             
  if(6 == wurf2): anz = anz + 1 end                                             
  if(6 == wurf3): anz = anz + 1 end                                             
  return anz                                                                    
end                                                                             
                                                                                
# START                                                                         
                                                                                
einsatz                = 1                                                      
kapital                = einlesen("Startkapital")                               
simulationen           = einlesen("Simulationen")                               
                                                                                
# starte simulation:                                                            
aktuelleSimulation = 1                                                          
while(aktuelleSimulation <= simulationen)                                       
  kapital = kapital - einsatz                                                   
  gewinn  = simuliere(einsatz)                                                  
  kapital = kapital + gewinn                                                    
  aktuelleSimulation = aktuelleSimulation + 1;                                  
end                                                                             
puts "Es verbleiben #{kapital} Euro."   
                

Lösung von: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

import random
s = 1000 # Startkapital = 1000 Euro
for n in range (1000): # 1000 Runden
    a = random.randint(1,6)
    b = random.randint(1,6)
    c = random.randint(1,6)
    s = s - 1
    if a==6 or b==6 or c==6:
        s = s + 1
    if a==6:
        s = s + 1
    if b==6:
        s = s + 1
    if c==6:
        s = s + 1
print "Sie haben noch", s, "Euro"
                

Lösung von: Name nicht veröffentlicht

/*--- Programm-Parameter ---*/                       
DCL KO_RUNDEN        BIN FIXED(31) VALUE(1000);      
DCL KO_ANZWURF       BIN FIXED(31) VALUE(3);         
DCL ZW_KAPITAL       BIN FIXED(31) INIT(1000) STATIC;
                                                     
/*--- Interne Variablen ---*/                        
DCL IND_RUNDE        BIN FIXED(31) INIT(0);          
DCL IND_WURF         BIN FIXED(31) INIT(0);          
DCL IND_TREFFER      BIN FIXED(31) INIT(0);          
DCL ZAHL(KO_ANZWURF) BIN FIXED(31) INIT(0,0,0);      
DCL ZW_RUNDE         PIC'ZZZ9'     INIT(0);          
DCL ZW_ZAHL          PIC'9'        INIT(0);          
DCL ZW_GEWINNP       PIC'9'        INIT(0);          
DCL ZW_KAPITALP      PIC'ZZZ9'     INIT(ZW_KAPITAL); 
                                                     
/*--- Programm ---*/                                 
DO IND_RUNDE = 1 TO KO_RUNDEN;                                   
  IND_TREFFER = 0; /* Init pro Runde */                          
  ZW_KAPITAL -= 1; /* Einsatz = 1.- */                           
  ZW_RUNDE = IND_RUNDE;                                          
  PUT SKIP EDIT('Runde ' !! TRIM(ZW_RUNDE))(A);                  
  PUT EDIT('. Ihre Zahlen: ')(A);                                
  DO IND_WURF = 1 TO KO_ANZWURF;                                 
    ZAHL(IND_WURF) = TRUNC((RANDOM()*6)+1);                      
    ZW_ZAHL = ZAHL(IND_WURF);                                    
    PUT EDIT(ZW_ZAHL !! ' ')(A);                                 
    IF(ZAHL(IND_WURF)) = 6 THEN IND_TREFFER += 1;                
  END; /* IND_WURF = 1 TO KO_ANZWURF */                          
  SELECT(IND_TREFFER);                                           
    WHEN(0) PUT SKIP LIST(' > Sorry, leider nichts gewonnen.');  
    WHEN(1,2,3) DO;                                              
      ZW_GEWINNP = IND_TREFFER;                                  
      PUT SKIP LIST(' > Cool, du hast soeben ' !! ZW_GEWINNP !!  
                     ' CHF gewonnen');                           
      ZW_KAPITAL += (IND_TREFFER + 1); /* Plus Einsatz zurück */ 
    END;                                                         
    OTHER DO;                                                    
      PUT SKIP LIST('FEHLER: Mehr als 3 Zahlen gezogen.');       
      PUT SKIP LIST('Bitte Programm prüfen.');                   
      IND_RUNDE = KO_RUNDEN;                                     
    END;                                                         
  END; /* SELECT(IND_TREFFER); */                                
  ZW_KAPITALP = ZW_KAPITAL;                                      
  PUT SKIP LIST(' > Dein Kapital: ' !! ZW_KAPITALP !! ' CHF');   
END; /* IND_RUNDE = 1 TO KO_RUNDEN */     
PUT SKIP LIST('=== ENDE ===');            
                

Lösung von: Valentin Marolf (AXA)

'Solution for VBA

'Spieleinstellungen
Const Runden As Integer = 1000              'Anzahl Runden
Const StartKapital As Integer = 1000        'Startkapital in CHF
Const Einsatz As Integer = 1                'Einsatz in €
Const Gewinn As Integer = 1                 'Gewinn in €
Const Gewinnziffer As Byte = 6              'Gewinn bei Ziffer 6
Const Wuerfel As Byte = 3                   'Anzahl Wuerfel pro Wurf


'Aufrufende Prozedur
Sub Chuck_a_Luck()

'Variablen
Dim i As Long                               'Schleifenvariable
Dim Kasse As Long                           'Aktuelles Vermögen des Spielers

'Initialisierung
Kasse = StartKapital * 0.88                 '1CHF=0,88€

'Routine
For i = 1 To Runden
    Kasse = (Kasse - Einsatz) + (Werfen * Gewinn)
Next i

Debug.Print Kasse

End Sub

'Gibt false zurück, wenn keine Sechs geworfen wurde
Private Function Werfen() As Byte
'Variablen
Dim i As Byte                               'Schleifenvariable
Dim count As Byte                           'Trefferzahl

'Initialisierung
count = 0
Randomize

'Routine
For i = 1 To Wuerfel
    If Int(6 * Rnd + 1) = Gewinnziffer Then
        count = count + 1
    End If
Next i

'Rückgabe
Werfen = count
    
End Function
                

Lösung von: Felix Reinhold ()

//Simulation von Chuck-a-Luck

#include <iostream>
#include <stdlib.h>

int wuerfeln();

int main(void)	{
	int einsatz, runden;
	std::cout << "Wie viel Geld: ";
	std::cin >> einsatz;
	std::cout << "Wie viele Runden: ";
	std::cin >> runden;
	for(int i = 0; i < runden; i++)	{
		einsatz--;
		int treffer = 0;
		for(int j = 0; j < 3; j++)	{
			if((rand() % 6 + 1) == 6)	{
				treffer++;
			}
		}
		einsatz += treffer;	
		if(einsatz == 0)	{
			std::cout << "Sie haben nach der " << i << " Runde kein Geld mehr!!" << std::endl;
			break;
		}
	}
	std::cout << "\n\n";
	std::cout << "Sie haben noch: " << einsatz << "\n\n";
	system("pause");
	return 0;
}
                

Lösung von: Name nicht veröffentlicht

;Programmiersprache: PureBasic, Version 4.60

OpenConsole()

PrintN("Wie hoch ist das Startkapital? (Euro)")
kapital = Val(Input())
PrintN("Wie viele Runden sollen simuliert werden?")
runden = Val(Input())

For i = 0 To runden
  PrintN("Runde Nummer "+Str(i)+", Kapital: "+Str(kapital))
  wurf1 = Random(5)+1
  wurf2 = Random(5)+1
  wurf3 = Random(5)+1
  
  kapital = kapital - 1
  PrintN("Zahle Einsatz! - 1 Euro!")
  
  If wurf1 = 6 Or wurf2 = 6 Or wurf3 = 6
    kapital = kapital+1
    PrintN("Ein Würfel zeigt eine 6! + 1 Euro!")
    If wurf1 = 6
      kapital = kapital+1
      PrintN("Wurf 1 ist eine 6! + 1 Euro!")
    EndIf
    If wurf2 = 6
      kapital = kapital+1
      PrintN("Wurf 2 ist eine 6! + 1 Euro!")
    EndIf
    If wurf3 = 6
      kapital = kapital+1
      PrintN("Wurf 3 ist eine 6! + 1 Euro!")
    EndIf
  Else
    PrintN("Verloren! kein Würfel zeigt eine 6!")
  EndIf
    
 
Next i

PrintN("Der Endstand nach "+Str(runden)+" Runden beträgt "+Str(kapital)+" Euro.")
Input()
                

Lösung von: Ich Bins (tubs)

// Copyright 2012, Christian J. Kiewiet.
//
///////////////////////////////////////////////////////////////////////////////
// Lösung zur Aufgabenstellung ``Chuck-a-Luck (Simulationen)''
//
// ``Simuliere das Spiel Chuck-a-luck. Bei diesem Spiel bezahlt der Spieler pro
// Runde Euro 1.- als Einsatz.  Er darf nun nacheinander drei Würfel werfen.  
// Zeigt mindestens ein Würfel eine 6, so erhält  er zunächst den Einsatz 
// zurück. Zudem erhält er für jede geworfene 6 Euro 1.- als Gewinn ausbezahlt. 
// Liegt keine 6, so verliert er den Einsatz. Starten Sie mit einem Kapital 
// von CHF 1'000.- und simulieren Sie 1000 Runden.''
///////////////////////////////////////////////////////////////////////////////
#include <cstdlib>
#include <iostream>

class ChuckALuck {
  public:
    /** Seeds the PRNG with the current time in seconds. */
    inline ChuckALuck () { srand(time(0)); }
    
    /** Performs |kSimulations| dice rolls with three dice.  Every every dice
     * showing six, the player's capital is increased by 1.  Returns the
     * capital after all simulations, aborts on depletion of capital. */
    int Simulate() {
      int capital(kInitialCapital);
      for (int i = kSimulations; i-- && capital--; )
        for (int i = 3, j = 0; i--; j += static_cast<int>((rand() % 6) == 5),
                                    capital += j);
      return capital;
    }
    
  private:
    static const int kInitialCapital = 1000;
    static const int kSimulations = 1000;
};

int main(int argc, char* argv[]) {
  ChuckALuck game;
  game.Simulate();
}
                

Lösung von: Christian Kiewiet ()

#!/usr/bin/python3

#http://www.programmieraufgaben.ch/aufgabe/chuck-a-luck/c3u0jrfq

#zufallsgenerator importieren, initialisieren
import random
random.seed()

#Starteinsatz 1000€
einsatz = 1000
print("Dein Starteinsatz beträgt 1000€ gespielt werden 1000 Runden")
runde = 0
while not runde == 1000:
    
#pro Runde 1€ Einsatz
    einsatz = einsatz - 1

#Nacheinander 3 Würfel werfen
    wuerfel1 = random.randint(1,6)
    wuerfel2 = random.randint(1,6)
    wuerfel3 = random.randint(1,6)
    runde = runde + 1

#zeigt 1 Würfel eine 6 -> Einsatz zurück
    if wuerfel1 == 6:
        einsatz = einsatz + 1
    
#für jede weitere 6 1€ gewinn
    if wuerfel2 == 6:
        einsatz = einsatz + 1
    if wuerfel3 == 6:
        einsatz = einsatz + 1
print(runde, "wurden gespielt", einsatz, "€ habe ich noch")

                

Lösung von: Name nicht veröffentlicht

program ChuckALuck (input, output);
{ Bei diesem Spiel bezahlt der Spieler pro Runde Euro 1.- als Einsatz.  Er darf nun nacheinander drei Würfel werfen.  Zeigt mindestens ein Würfel eine 6, so erhält  er zunächst den Einsatz zurück.
Zudem erhält er für jede geworfene 6 Euro 1.- als Gewinn ausbezahlt. Liegt keine 6, so verliert er den Einsatz.
Starten Sie mit einem Kapital von 1'000.- und simulieren Sie 1000 Runden. }

  const
  STARTWERT = 1000;
  RUNDEN = 1000;
  WURFANZAHL = 3;
  WUERFELSEITEN = 6;

  var
  Geld,
  i, j: integer;
  bankrott,               // wird gesetzt wenn einem das Geld ausgeht.
  sechsGeworfen: boolean; // wird gesetzt wenn man diese Runde 6 gew. hat.

begin
  { initialisieren }
  Randomize; { Zufallszahlengenerator initialisieren }
  Geld := STARTWERT;
  bankrott := false;
  i := 1;

  { "Simulation": }
  while (i <= RUNDEN) and (not bankrott) do
  begin
    i := i + 1;
    Geld := Geld - 1;
    sechsGeworfen := false;

    for j := 1 to WURFANZAHL do
      if (Random(WUERFELSEITEN) + 1) = WUERFELSEITEN then
      begin
        Geld := Geld + 1;
        sechsGeworfen := true;
      end; { if (Random(WUERFELSEITEN) + 1) = WUERFELSEITEN then }

    if sechsGeworfen then
      Geld := Geld + 1;

    if Geld = 0 then
      bankrott := true;
  end; { while (i <= RUNDEN) and (not bankrott) }

  { Endausgabe: }
  if bankrott then
    writeln('Sie sind leider vor dem Ende bankrott gegangen')
  else
    writeln('Rest: ', Geld);

end. { ChuckALuck }

                

Lösung von: Patrick Reif ()

# Python 3.4.2

from random import randint

kapital = 1000

for i in range(1001):
    ergebnisse = list()
    kapital -= 1
    for wurf in range(3):
        augenzahl = randint(1, 6)
        ergebnisse.append(augenzahl)

    # Mindestens eine 6: Einsatz zurueck
    if 6 in ergebnisse:
        kapital += 1

    # Fuer jede 6 den Gewinn ausbezahlen
    for i in ergebnisse:
        if i == 6:
            kapital += 1

print('Kapital nach 1000 Runden:', kapital)
                

Lösung von: Hilli Hilli ()

<?php

	/**
	* Chuck-a-Luck
	* @author Lukas Müller
	*/
	
	$wuerfe = array(rand(1, 6),rand(1, 6),rand(1, 6));
	$treffer_mittelwert = array();
	$kapital = 1000;
	for($i = 0; $i <= $kapital; $i++){
		$wuerfe = array(rand(1, 6),rand(1, 6),rand(1, 6));
		$zaehler = 0;
		for($h = 0; $h <=3; $h++){
			if($wuerfe[$h] == 6){
				$zaehler++;
			}
		}
		$treffer_mittelwert[$i] = $zaehler;
		switch ($zaehler){
			case 0:
				$kapital--;
			break;
			case 1:
				$kapital++;
			break;
			case 2:
				$kapital += 2;
			break;
			case 3:
				$kapital += 3;
			break;
		}
	}
	echo "<p>Durchschnittlich hat man in einer Runde " . round(array_sum($treffer_mittelwert)/count($treffer_mittelwert), 3) . " sechser. <br />";
	echo "Das Endkapital beträgt $kapital.-</p>";
?>
                

Lösung von: Lukas Müller (Informatik Studium)

import random
runde = 0
guthaben = 1000

while runde < 1000:
    guthaben -=1
    wurfliste = []
    versuch = 0
    while versuch < 3:
        wurf = random.randint(1,6)        
        wurfliste.append(wurf)
        versuch +=1        
    if 6 in wurfliste:
        guthaben +=1   

    sechs_gewuerfelt = wurfliste.count(6)
    guthaben +=sechs_gewuerfelt#für jede gewürfelte sechs gibt es einen Euro
    runde+=1  

print(guthaben)
                

Lösung von: Py Thon ()

using System;

namespace Chuck_a_luck {
	class Program {
		static void Main() {
			Random rnd = new Random();
			int runde = 1, kapital = 1000;

			for (;
				runde <= 1000 && kapital > 0;
				runde++) {

				kapital--;

				for (int i = 0; i < 3; i++)
					if (rnd.Next(1, 7) == 6) kapital++;
			}

			Console.WriteLine("Das Spiel wurde in Runde {0} mit {1} Euro Kapital beendet", --runde, kapital);

			Console.ReadKey(true);
		}
	}
}
                

Lösung von: Marcel Kapma ()

var balance = 1000,
    i = 1;
    
function roll() {
   var j = 1;
   balance--;
   for(j; j <= 3; j++) 
      if (Math.round((Math.random() * 6) + 1) == 6) balance++;
}

for (i; i <= 1000; i++) roll();
console.log("Guthaben nach 1000 Runden: " + balance + " €");

                

Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)

object ChuckaLuckSimu extends App {
var Kapital:Int = 1000
var inti = scala.util.Random
var counter:Int = 0
var random_1 = inti.nextInt(7)
var random_2 = inti.nextInt(7)
var random_3 = inti.nextInt(7)
while(counter != 1000){
  Kapital = Kapital - 1
  if(random_1 == 0){
    random_1 = inti.nextInt(7)
  }
  else if(random_2 == 0){
    random_2 = inti.nextInt(7)
  }
  else if(random_3 == 1000){
    random_3 = inti.nextInt(7)
  }
  else{
    if(random_1 == 6){
      Kapital = Kapital + 1
    }
    if(random_2 == 6){
      Kapital = Kapital + 2
    }
    if(random_3 == 6){
      Kapital = Kapital +3
    }
    random_1 = inti.nextInt(7)
    random_2 = inti.nextInt(7)
    random_3 = inti.nextInt(7)
    counter = counter + 1
  }
}
println("Dein Kapital jetzt beträgt " + Kapital )
}
                

Lösung von: Name nicht veröffentlicht

import random
random.seed ()

Versuche= 1000
Kapital = 1000

while Versuche != 0:

    Kapital -= 1

    x1 = random.randint(1,6)
    if(x1) == 6:
        Kapital +=1
        print("juhhu")

    x2 = random.randint(1,6)
    if(x2) == 6:
        Kapital +=1

    x3 = random.randint(1,6)
    if(x3) == 6:
        Kapital +=1

    Versuche -= 1

print(Kapital)

                

Lösung von: La Ku ()

REPORT WUERFELN.

DATA: lv_geld  TYPE int4 VALUE 1000,
      lv_wurf1 TYPE i,
      lv_wurf2 TYPE i,
      lv_wurf3 TYPE i.


DO 1000 TIMES.

lv_geld = lv_geld - 1.

CALL FUNCTION 'AKB_RANDOM'
 EXPORTING
   MIN           = 1
   MAX           = 6
 IMPORTING
   RND           = lv_wurf1.

CALL FUNCTION 'AKB_RANDOM'
 EXPORTING
   MIN           = 1
   MAX           = 6
 IMPORTING
   RND           = lv_wurf2.

CALL FUNCTION 'AKB_RANDOM'
 EXPORTING
   MIN           = 1
   MAX           = 6
 IMPORTING
   RND           = lv_wurf3.

IF (  lv_wurf1 <> 6 AND lv_wurf2 <> 6 AND lv_wurf3 <> 6 ).

ELSE.
    lv_geld = lv_geld + 1.

    If ( lv_wurf1 = 6 ).

        lv_geld = lv_geld + 1.

    ENDIF.

    IF ( lv_wurf2 = 6 ).

        lv_geld = lv_geld + 1.

    ENDIF.

    IF ( lv_wurf3 = 6 ).

        lv_geld = lv_geld + 1.

    ENDIF.

ENDIF.

ENDDO.

WRITE:/ lv_geld.
                

Lösung von: Name nicht veröffentlicht

#include "stdafx.h"
#include <iostream>
#include <time.h>

using namespace std;

int main()
{
	srand(time(NULL));
	int kapital = 1000;
	int ergebnis;

	for (int i = 1; i < 1000; i++)
	{
		kapital--;
		for (int j = 1; j <= 3; j++)
		{
			ergebnis = rand() % 6;

			if (ergebnis == 5)
			{
				kapital++;
			}
		}
	}
	cout << kapital << endl;

	system("PAUSE");
}
                

Lösung von: Name nicht veröffentlicht

Private Sub CommandButton1_Click()
Dim einsatz As Integer
Dim result As Integer
Dim guthaben As Integer
Dim sechser As Integer


guthaben = 1000
einsatz = 1


For k = 0 To 1000
    guthaben = guthaben - einsatz
    sechser = 0
    For i = 0 To 2
        result = Int((6 * Rnd) + 1)
        If result = 6 Then
            guthaben = guthaben + einsatz
            sechser = sechser + 1
        End If
    
        If sechser >= 2 Then
            guthaben = guthaben + einsatz
        End If
    Next
Next
End Sub



                

Lösung von: Ozan Gümüstas ()

#include <stdio.h>
#include <time.h>
#include <stdlib.h>


void main(){

  int runde = 1;
  int geld = 1000;
  int wuerfel1, wuerfel2, wuerfel3;
  srand(time(NULL));

  while(runde <= 1000){
    wuerfel1 = rand() % 6 + 1;
    wuerfel2 = rand() % 6 + 1;
    wuerfel3 = rand() % 6 + 1;
    if(wuerfel1 != 6 && wuerfel2 != 6 && wuerfel3 != 6){
      geld = geld - 1;
      printf("%d.Sie haben keine 6 gewuerfelt. Sie haben nun %d Euro.\n",runde,geld);
      runde++;
    }
    if(wuerfel1 == 6 && wuerfel2 != 6 && wuerfel3 != 6){
      printf("%d.Sie haben eine 6 gewuerfelt. Sie haben nun %d Euro.\n",runde,geld);
      runde++;
    }
    if(wuerfel1 != 6 && wuerfel2 == 6 && wuerfel3 != 6){
      printf("%d.Sie haben eine 6 gewuerfelt. Sie haben nun %d Euro.\n",runde,geld);
      runde++;
    }
    if(wuerfel1 != 6 && wuerfel2 != 6 && wuerfel3 == 6){
      printf("%d.Sie haben eine 6 gewuerfelt. Sie haben nun %d Euro.\n",runde,geld);
      runde++;
    }
    if(wuerfel1 == 6 && wuerfel2 == 6 && wuerfel3 != 6){
      geld = geld + 2;
      printf("%d.Sie haben zwei 6 gewuerfelt. Sie haben nun %d Euro.\n",runde,geld);
      runde++;
    }
    if(wuerfel1 == 6 && wuerfel2 != 6 && wuerfel3 == 6){
      geld = geld + 2;
      printf("%d.Sie haben zwei 6 gewuerfelt. Sie haben nun %d Euro.\n",runde,geld);
      runde++;
    }
    if(wuerfel1 != 6 && wuerfel2 == 6 && wuerfel3 == 6){
      geld = geld + 2;
      printf("%d.Sie haben zwei 6 gewuerfelt. Sie haben nun %d Euro.\n",runde,geld);
      runde++;
    }
    if(wuerfel1 == 6 && wuerfel2 == 6 && wuerfel3 == 6){
      geld = geld + 3;
      printf("%d.Sie haben drei 6 gewuerfelt. Sie haben nun %d Euro.\n",runde,geld);
      runde++;
    }
  }
}

                

Lösung von: Fynn Koch (keine)

from random import randint
kapital = 1000

for i in range(1000):
    sechserEnthalten = False
    kapital -= 1
    for j in range(0, 3):
        wurf = randint(1 ,6)
        if wurf == 6:
            kapital += 1                # jede 6 einen Taler
            if not sechserEnthalten:    # Einsatz zurück bei der ersten 6, einmalig
                kapital += 1
            sechserEnthalten = True

print(kapital)
                

Lösung von: Peter Pan (Home Office)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ChuckLuck
{
    class Program
    {
        static void Main(string[] args)
        {
            Random rnd = new Random();
            int würfel1;
            int würfel2;
            int würfel3;
            int euro = 1000;
            int runden = 1;
            

            for (; runden <= 1000; runden++)
            {
                würfel1 = rnd.Next(1,7);
                würfel2 = rnd.Next(1,7);
                würfel3 = rnd.Next(1,7);
                int gv = 0;

                if (würfel1 == 6)
                {
                    euro++;
                    gv++;
                }

                if (würfel2 == 6)
                {
                    euro++;
                    gv++;
                }

                if (würfel3 == 6)
                {
                    euro++;
                    gv++;
                }
                euro--;
                gv--;
                if (euro == 0)
                {
                    break;
                }
                Console.WriteLine($"Runde {runden}\n1.Würfel = {würfel1}\n2.Würfel = {würfel2}\n3.Würfel = {würfel3}\nGewinn/Verlust = {gv} Euro\n");
               
            }
            Console.WriteLine("Das Spiel wurde nach {0} Runden mit {1} Euro beendet.",runden-1,euro);
            Console.ReadKey();
        }
    }
}

                

Lösung von: Chrischi Leif (S&N Datentechnik)

// NET 6.x | C# 10.x | VS-2022

var balance = 1_000;
var rounds = 1_000;

for (int i = 0; i < rounds; i++) {
    balance--;
    var d = Enumerable.Range(0, 3).Select(x => new Random().Next(1, 7)).Count(x => x == 6);
    if (d != 0) balance += d + 1;
    if (balance < 0) {
        Console.WriteLine("Leider alles verloren!");
        return;
    }
}
Console.WriteLine($"Guthaben: {balance} Euro");
                

Lösung von: Jens Kelm (@JKooP)

// C++ 17

#include <iostream>

int main() {
    srand(time(nullptr));
    auto balance{ 1'000 };
    auto rounds{ 1'000 };

    for (auto i{ 0 }; i < rounds; i++) {
        balance--;
        auto d{ 0 };
        for (auto k{ 0 }; k < 3; k++)
            d += (rand() % 6 + 1 == 6);
        if (d != 0) balance += d + 1;
        if (balance <= 0) {
            std::cout << "Leider alles verloren!";
            break;
        }
    }
    std::cout << "Guthaben: " << balance << " Euro\n";
}
                

Lösung von: Jens Kelm (@JKooP)

using System;

namespace ChuckAluck
{
    class Program
    {
        static void Main(string[] args)
        {
            Random r = new Random();
            string endText = "";
            ushort budget = 1000, rounds = 1000, gain = 0, roundPrice = 1;
            bool returnBudget = false;
            int draw = 0;

            for (ushort i = 1; i <= rounds; i++) {
                budget -= roundPrice;
                returnBudget = true;

                Console.WriteLine("\nRunde {0}", i);
                for (byte b = 1; b < 4; b++) {
                    draw = r.Next(1, 7);
                    Console.WriteLine("Würfel Nr. {0}. Gewürfelt: {1}", b, draw);

                    if (draw == 6) {
                        gain++;
                        if (returnBudget) {
                            budget++;
                            returnBudget = false;
                        }
                    }
                }
                if (budget <= 0) {
                    endText = $"\nNach {i} Runden haben Sie kein Geld mehr";
                    break;
                }

                endText = $"\nSie haben {i} lang gespielt, {gain} Euro Gewinn gemacht und verlassen das Chuck-a-luck mit {budget + gain} Euro.";
            }

            Console.WriteLine(endText);
            Console.ReadKey();  // endl
        }
    }
}
                

Lösung von: Name nicht veröffentlicht

#include <iostream>
#include <stdlib.h>     /* srand, rand */
#include <time.h>       /* time */
using namespace std;


int main(){
	srand (time(NULL));
    string endText = "";
    short budget = 1000, rounds = 1000, gain = 0, roundPrice = 1;
    bool returnBudget = true;
    int draw = 0;

    for(short i = 1; i <= rounds; i++) {
        if(budget <= 0) {
            cout << "Sie haben " << i << " Runden gespielt und haben kein Geld mehr.";
			return 0;
        }

        budget -= roundPrice;
        returnBudget = true;

        for(short b = 0; b < 4; b++) {
            draw = rand() % 6 + 1;

            if(draw == 6) {
                gain++;
                if (returnBudget) {
                    budget++;
                    returnBudget = false;
            	}
            }
        }
    }

    cout << "Sie haben " << rounds << " Runden lang gespielt, " << gain << " Euro Gewinn gemacht und verlassen das Chuck-a-luck mit " << (budget + gain);
}
                

Lösung von: Name nicht veröffentlicht

from random import randint
euro=1000
for a in range(1000):
        euro-=1;pruef=euro
        for a in range(3):
                wurf=randint(1,6)
                if wurf==6: euro+=1
        if euro!=pruef: euro+=1
print(euro)

                

Lösung von: rob ert (tub)

' VBA

Sub Main()
    Dim i As Integer, k As Integer, d As Integer, balance As Integer
    Const ROUNDS As Integer = 1000
    Randomize
    balance = 1000

    For i = 1 To ROUNDS
        balance = balance - 1
        d = 0
        For k = 1 To 3
            d = d + IIf(CInt(Rnd() * 6 + 1) = 6, 1, 0)
        Next
        If d <> 0 Then balance = balance + d + 1
        If balance <= 0 Then
            Debug.Print "Leider alles verloren!"
            Exit For
        End If
    Next
    
    Debug.Print "Guhaben: " & balance & "Euro"
    
End Sub
                

Lösung von: Jens Kelm (@JKooP)

Verifikation/Checksumme:

Pro Spiel verliert man im Durchschnitt ca. 7.87 Cent (das entspricht einem Erwartungswert von 17/216 für das Casino, also für den Spielbetreiber).

Nach 1000 Simulationen sollten bei einem Startkapital von Euro 1000 noch ca. 920 Euro als Kapital übrig bleiben.

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit:
Schwierigkeit: k.A.
Webcode: c3u0-jrfq
Autor: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

Zu Aufgabenblatt hinzufügen