Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Ganze Zufallszahlen (Simulationen)

Die meisten Programmiersprachen kennen einen Zufallszahlengenerator, der eine (pseudo-)zufällige Zahl zwischen 0.0 (inklusive) und 1.0 (exklusive) erzeugt.

Schreiben Sie eine Funktion, die eine solche gleichverteilte Zufallszahl in eine ganze Zufallszahl von min bis max umwandelt:

zufall(nullEinsVerteilt: double, min: integer, max: integer): integer

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

5 Lösung(en)

int zufall(double nullEinsVerteilt, int min, int max) {
  return (int) (nullEinsVerteilt * (max - min + 1)) + min; }

int zufall(int min, int max) {
  return zufall(Math.random(), min, max);  }
                
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
Ganze Zufallszahlen
https://www.programmieraufgaben.ch/aufgabe/ganze-zufallszahlen/8v6nj82y
"""

# Programmieraufgabe:
#     Die meisten Programmiersprachen kennen einen Zufallszahlengenerator, der
#     eine (pseudo-)zufällige Zahl zwischen 0.0 (inklusive) und 1.0 (exklusive)
#     erzeugt.
#     Schreiben Sie eine Funktion, die eine solche gleichverteilte Zufallszahl
#     in eine ganze Zufallszahl von min bis max umwandelt:
#
# Autor, Erstellung:
#     Ulrich Berntien, 2018-10-27
#
# Sprache:
#    Python 3.6.6


import collections
import random


def zufall(null_eins_verteilt: float, min: int, max: int) -> int:
    """
    Transformiere Zahl aus [0,1( auf den Bereich min..max mit Ganzen Zahlen.
    :param null_eins_verteilt: Zahl [0,1(
    :param min: Kleinste Ganze Zahl
    :param max: Größte Ganze Zahl
    :return: Ganze Zahl aus dem definierten Bereich.
    """
    assert 0.0 <= null_eins_verteilt < 1.0
    assert int(min) == min and int(max) == max and min < max
    return int(min + (max - min + 1) * null_eins_verteilt)


if __name__ == '__main__':
    counter = collections.Counter()
    for i in range(30):
        counter[zufall(random.random(), 5, 7)] += 1
    for number in sorted(counter.keys()):
        print("Zahl", number, "aufgetaucht", counter[number], "mal")
                

Lösung von: Ulrich Berntien ()

function randomInt(float01, min, max) {
  return Math.floor(float01 * (max - min + 1) + min);
}

for (let i = 1; i <= 30; i++) console.log(randomInt(Math.random(), 5, 7));
                

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

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

// mit Bordmitteln
int RndInt1(int min, int max) => new Random().Next(min, max + 1);

// umständlich
int RndInt2(int min, int max) => (int)(new Random().NextDouble() * (max - min + 1) + min);
                

Lösung von: Jens Kelm (@JKooP)

// C++14 | VS-2022

#include <iostream>
#include <random>

static const auto get_rnd_int(int begin_, int end_) {
	std::random_device rd;
	return (rd() % (end_ - begin_ + 1)) + begin_;
}

int main() {
	std::cout << get_rnd_int(10, 30) << "\n";
}
                

Lösung von: Jens Kelm (@JKooP)

Verifikation/Checksumme:

Rufen Sie 30 Mal die Funktion mit den Werten

random(5, 7)

auf. Die Zahlen 5, 6 und 7 sollten alle ca. 10 Mal auftauchen.

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 0.25
Schwierigkeit: k.A.
Webcode: 8v6n-j82y
Autor: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen