Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Mit dem Auto, dem Zug, dem Fahrrad oder zu Fuß? (Simulationen)

Schreiben Sie ein Programm, das entweder «Auto», «Zug», «Fahrrad» oder «Zu Fuß» ausgibt und zwar mit den Wahrscheinlichkeiten 3:3:2:1. Von 1000 Aufrufen sollen also etwa 1/3 «Auto», 1/3 «Zug», 2/9 «Fahrrad» bzw. 1/9 «Zu Fuß» ausgegeben werden.

Zusatzaufgabe: Schreiben Sie obiges Programm so um, dass es 20 Ausgaben durchführt. Ändern Sie danach das Programm so ab, dass zu Testzwecken immer die selbe Zufallsfolge erzeugt wird; dies kann mit dem sog. Seed erreicht werden. Der Seed ist das x0 aus der Aufgabe 10.1 («Lineare Kongruenzmethode» aus dem Buch "Programmieren Lernen" - Seite 122). Die meisten Programmiersprachen bieten es an, den Seed selbst zu wählen.

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

8 Lösung(en)

// see https://github.com/pheek/WalkerCategories
import eu.gressly.math.random.WalkerCategories;

// see https://github.com/pheek/javaSequencer
import static eu.gressly.util.Sequencer.seq;

public class AutoZugFahrradFuss {

	public static void main(String[] args) {
		new AutoZugFahrradFuss().top();
	}

	String[] fortbewegung = {"Auto", "Zug", "Fahrrad", "zu Fuss"};
	void top() {
		WalkerCategories wc = new WalkerCategories(new double[]{3, 3, 2, 1});
		for(int i : seq(1, 1000)) {
			int kategorie = wc.getWeightedCategory(Math.random());
			System.out.println(i + ". " + fortbewegung[kategorie]);
		}
	}

} // end of class AutoZugFahrradFuss
                

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

// see https://github.com/pheek/WalkerCategories
import eu.gressly.math.random.WalkerCategories;

// see https://github.com/pheek/javaSequencer
import static eu.gressly.util.Sequencer.seq;

import java.util.Random;

public class AutoZugFahrradFuss {

	public static void main(String[] args) {
		new AutoZugFahrradFuss().top();
	}

	String[] fortbewegung = {"Auto", "Zug", "Fahrrad", "zu Fuss"};
	void top() {
		Random r = new Random();
		r.setSeed(55);
		WalkerCategories wc = new WalkerCategories(new double[]{3, 3, 2, 1});
		for(int i : seq(1, 20)) {
			int kategorie = wc.getWeightedCategory(r.nextDouble());
			System.out.println(i + ". " + fortbewegung[kategorie]);
		}
	}

} // end of class AutoZugFahrradFuss
                

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

using System;
using System.Collections.Generic;
using System.Linq;

namespace Auto_Zug_Fahrrad_Fuß {
	class Program {

		public static string Transport(int? seed = null) {

			int
				min = 1, max = 10,
				transporter =
				seed == null ?
				Singleton.GetRandom().Next(min, max) :
				Singleton.GetRandom((int)seed).Next(min, max);

			return
				transporter < 4 ? "Auto" :
				transporter < 7 ? "Zug" :
				transporter < 9 ? "Fahrrad" :
				"Fuß";
		}//Ende Transport

		static void Main(string[] args) {
			for (int i = 1; i <= 20; i++)
				Console.WriteLine("{0,2}: {1}", i, Transport(5));
			Console.ReadKey(true);
		}//Ende Main
	}

	class Singleton {
		private static Random random;
		private static Dictionary<int, Random> randomWithSeed;

		public static Random GetRandom() {
			if (random == null)
				random = new Random();
			return Singleton.random;
		}

		public static Random GetRandom(int seed) {
			if (randomWithSeed == null) randomWithSeed = new Dictionary<int, Random>();

			if (!randomWithSeed.ContainsKey(seed))
				randomWithSeed.Add(Math.Abs(seed), new Random(seed));

			return randomWithSeed.First(x => x.Key == seed).Value;
		}
	}//Ende Singleton
}

                

Lösung von: Marcel Kapma ()

Math.sRandom = function(seed) {
   return {
      next: function() {
         module   =  2e32;
         seed     *= 2e32 - 1;    // faktor
         seed     += 12345;       // schrittweite
         return (seed %= module) / module;
      }
   }
}

var rnd = Math.sRandom(26),
    i = 1;
    
function locomotion() {
   var choice = rnd.next() * 9 + 1;
   if (choice <= 3) return "Auto";
   if (choice <= 6) return "Zug";
   if (choice <= 8) return "Fahrrad";
   return "zu Fuß";
}

for (i; i <= 20; i++) console.log(locomotion());
                

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

#include <iostream>
#include <random>

using namespace std;

int random = 0;

int main() {

	random_device rn;
	mt19937 engine(rn());

	engine.seed(1);

	for (int i = 0; i < 20; i++) {

		uniform_int_distribution<int> dice(1, 9);

		random = dice(engine);

		switch (random) {

		case 1:

			cout << "Du faehrst mit dem Auto!" << endl;
			break;

		case 2:

			cout << "Du faehrst mit dem Auto!" << endl;
			break;

		case 3:

			cout << "Du faehrst mit dem Auto!" << endl;
			break;

		case 4:

			cout << "Du faehrst mit dem Zug!" << endl;
			break;

		case 5:

			cout << "Du faehrst mit dem Zug!" << endl;
			break;

		case 6:

			cout << "Du faehrst mit dem Zug!" << endl;
			break;

		case 7:

			cout << "Du faehrst mit dem Fahrrad!" << endl;
			break;

		case 8:

			cout << "Du faehrst mit dem Fahrrad!" << endl;
			break;

		case 9:

			cout << "Du gehst zu Fuß!" << endl;
			break;

		}

	}

	system("PAUSE");

	return 0;
}
                

Lösung von: Loris Leitner (Imma-Mack-Realschule Eching)

import java.util.Random;


public class AutoZugFahrradFuß {

    public static void main(String[] args) {
	String [] methode= {"Auto","Zug","Fahrrad","Zu Fuß"};
	 Random random = new Random();
	     int ergebnis = random.nextInt(9);
	     switch (ergebnis){
	     case 1 : case 2 : case 3: System.out.println(methode[1]); break;
	     case 4 : case 5 : case 6: System.out.println(methode[2]); break;
	     case 7 : case 8 :	 System.out.println(methode[3]); break;
	     case 9 :	 System.out.println(methode[4]); break;
	     }
	 
    }

}

                

Lösung von: Name nicht veröffentlicht

import random

#Ohne Zusatzaufgabe
x = random.randint(1,10)
if x <= 3:
    print("Auto")
elif 3 < x <= 6:
    print("Zug")
elif 6 < x <= 8:
    print("Fahrrad")
else:
    print("Zu Fuß")
                

Lösung von: Patrick L. (Gymnasium Friedrich II)

* Aufgabe ohne Seed.

REPORT  zautofahrrad.

DATA: lv_int TYPE i.

DO 20 TIMES.
  CALL FUNCTION 'GENERAL_GET_RANDOM_INT'
    EXPORTING
      range  = 8 " Zufallszahl von 0-8
    IMPORTING
      random = lv_int.

  IF lv_int <= 2.
    WRITE: / 'Auto'.
  ELSEIF lv_int > 2 AND lv_int <= 5.
    WRITE: / 'Bahn'.
  ELSEIF lv_int > 5 AND lv_int <= 7.
    WRITE: / 'Fahrrad'.
  ELSEIF lv_int = 8.
    WRITE: / 'Zu Fuß'.
  ENDIF.
ENDDO.
                

Lösung von: Alexander S. (msg systems)

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 0.5
Schwierigkeit: Mittel
Webcode: tfod-exee
Autor: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen