Napisz program, który losuje liczby całkowite z przedziału od 1 do m dopóki bieżąca średnia wszystkich wyświetlonych liczb różni się od prawidłowej średniej arytmetycznej (liczb z przedziału od 1 do m) o więcej niż założony błąd.
Dla każdej kolejnej liczby wyświetl ją, sumę wszystkich wylosowanych liczb, bieżącą średnią.
Wartość m należy wylosować z przedziału od 1 do 100. Błąd (względny) przyjąć 1%.
Użyj odpowiednich typów zmiennych: tylko średnia arytmetyczna jest wartością rzeczywistą, więc tylko ona może być typu zmiennoprzecinkowego.
Odpowiedź:
import random
# wylosowanie liczby m z przedziału od 1 do 100
m = random.randint(1, 100)
# wyliczenie wartości prawidłowej średniej
srednia = (m + 1) / 2
# przyjęcie błędu względnego 1%
blad = srednia * 0.01
# inicjalizacja zmiennych
suma = 0
liczba = 0
srednia_biezaca = 0
# losowanie liczb dopóki bieżąca średnia różni się od prawidłowej średniej o więcej niż założony błąd
while abs(srednia_biezaca - srednia) > blad:
# losowanie liczby z przedziału od 1 do m
liczba = random.randint(1, m)
# dodanie wylosowanej liczby do sumy
suma += liczba
# wyliczenie bieżącej średniej arytmetycznej
srednia_biezaca = suma / (liczba - 1 if liczba > 1 else 1)
# wyświetlenie wyników
print(f"{liczba} {suma} {srednia_biezaca:.5f}")