from random import randrange import matplotlib.pyplot as plt import numpy as np from math import sin, cos, pi # Anzahl der Durchführungen des Zufallsexperiments n = 10 # anzahl_der_eckpunkte = 3 # gewichte_der_ecken = [1, 1, 1] # gewichte_der_ecken = [1, 2, 4] # anzahl_der_eckpunkte = 4 # gewichte_der_ecken = [1, 3, 1, 3] anzahl_der_eckpunkte = 5 gewichte_der_ecken = [1, 1, 1, 1, 1] zuordnung_zufallszahl_zu_ecknummer = [] for i, g in enumerate(gewichte_der_ecken): zuordnung_zufallszahl_zu_ecknummer += g * [i] print(zuordnung_zufallszahl_zu_ecknummer) alpha = 2*pi/anzahl_der_eckpunkte liste_der_eckpunkte = [np.array([cos(i*alpha), sin(i*alpha)]) for i in range(anzahl_der_eckpunkte)] print(f"{liste_der_eckpunkte=}") gesamtgewicht = len(zuordnung_zufallszahl_zu_ecknummer) # Folgendes wohl nicht gerade zeitoptimiert... schwerpunkt = sum([gewichte_der_ecken[x] * liste_der_eckpunkte[x] for x in range(anzahl_der_eckpunkte)])/gesamtgewicht zufallszahlen = [randrange(gesamtgewicht) for i in range(n)] gewaehlte_eckpunkte = [liste_der_eckpunkte[zuordnung_zufallszahl_zu_ecknummer[e]] for e in zufallszahlen] print(zufallszahlen) print(gewaehlte_eckpunkte) liste_der_schwerpunkte = [sum(gewaehlte_eckpunkte[:i])/i for i in range(1, n+1)] s = ", ".join([f"{gewichte_der_ecken[i]}/{gesamtgewicht}" for i in range(anzahl_der_eckpunkte)]) print(f"""Simulation eines Zufallsexperiments {n} Mal wird zufällig ein Punkt des regelmässigen {anzahl_der_eckpunkte}-Ecks gewählt. Die Wahrscheinlichkeiten, mit denen die Eckpunkte gewählt werden, sind {s} (Der erste Eintrag bezieht sich auf den rechtesten Eckpunkt (1,0), danach im mathematisch positiven Drehsinn weiter.)""") plt.title("""Simulation eines Zufallsexperiments (gewichteter) Schwerpunkt in Schwarz""") axis = plt.gca() plt.gca().set_aspect('equal') axis.set_xlim([-1, 1]) axis.set_ylim([-1, 1]) plt.plot([schwerpunkt[0]], [schwerpunkt[1]], color='black', marker = "o", ms = 10) liste_der_x_koordinaten_der_eckpunkte = [p[0] for p in liste_der_eckpunkte] liste_der_x_koordinaten_der_eckpunkte.append(liste_der_eckpunkte[0][0]) liste_der_y_koordinaten_der_eckpunkte = [p[1] for p in liste_der_eckpunkte] liste_der_y_koordinaten_der_eckpunkte.append(liste_der_eckpunkte[0][1]) plt.plot(liste_der_x_koordinaten_der_eckpunkte, liste_der_y_koordinaten_der_eckpunkte, color="orange", marker = "o", ms = 4, mfc = "orange") liste_der_x_koordinaten = [s[0] for s in liste_der_schwerpunkte] liste_der_y_koordinaten = [s[1] for s in liste_der_schwerpunkte] plt.plot(liste_der_x_koordinaten, liste_der_y_koordinaten, color="blue", marker = "o", ms = 4, mfc = "red") plt.show()