ozzi91
Mireczki #python #programowanie

potrzebuję wygenerować dwie liczby zmiennoprzecinkowe których średnia arytmetyczna będzie się zawierać w określonym zakresie i nie mogą być większe ani mniejsze niż 20% od tej wartości średniej arytmetycznej czyli

bmin >= 0,8 B

bmax<= 1,2 B

no a B = (bmin + bmax) /2

czyli tak naprawdę chodzi o generację random liczby przy zachowaniu określonych warunków.

coś tam szukałem ale to są takie już dosyć trudne przykłady które nie bardzo rozumiem, może jest jakieś prostsza funkcja czy metoda bo jestem na samym początku nauki i jakoś sobie poradziłem ale na zasadzie: wygeneruj liczbę jakąś bmin zzakresu , do wygenerowanej dodaj wygenerowana kolejna liczbę (jakas mała żeby nie przesadzić) która będzie bmax. potem już wiadomo no i działa ale jakby przez mój perfekcjonizm wkurza mnie to że nie pokrywa na bank całego możliwego zakresu.

nie potrzebuję takich par jakoś dużo, może z 50 i nawet czasami wartości mogą się nawet powtarzać
  • Najlepsze
  • Wszystkie komentarze
Krolik
Krolik
@ozzi91 Generujesz średnią B losowo ze wskazanego zakresu dla średniej, a potem losową wartość delta z zakresu [0; 0,1 * B]. Twoje liczby to B-delta i B+delta.
mrq
mrq
1
@ozzi91: Wiesz co zwraca gpt dla twojego problemu?

https://pastebin.com/mRwLF4L4

Jeśli dobrze czytam to ta funkcja najpierw wyznacza średnią z zakresu.
Potem dla tej średniej wyznacza górny i dolny
Krolik
Krolik
Następnie tak długo generuje liczby zmiennoprzecinkowe aż nie zostanie spełniony warunek tych 20%.


@mrq: no nie, to jest chała, tak się nie robi. Chatgpt jak zwykle w formie. Najprodukował masę niepotrzebnego kodu.
ozzi91
ozzi91 Autor
0
@mrq kompletnie zapomniałem o gpt :p
@Krolik chyba macie obydwoje to samo rozwiązanie jeżeli dobrze interpretuję ale sprawdzę to dopiero wieczorem
mrq
mrq
0
no nie, to jest chała, tak się nie robi.

@Krolik: opiszesz coś więcej? Jakieś konkrety jak się nie powinno robić? Zawsze to dobra okazja nauczyć się czegoś nowego.
Krolik
Krolik
@mrq: Nie powinno się losować tak długo jak się wylosuje z zadanego zakresu, bo taki algorytm pesymistycznie może się nigdy nie zakończyć. Nie mówiąc o tym, że jest to zupełnie niepotrzebne. Podałem algorytm parę postów wyżej - wystarczą 2 losowania.
mrq
mrq
0
@Krolik: ok, thx. Spodziewałem się że chodzi ci to że to "siłowa" metoda ale wolałem dopytać.