Wpis z mikrobloga

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ć
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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.
  • Odpowiedz
via Android
  • 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
  • Odpowiedz
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.
  • Odpowiedz
  • 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.
  • Odpowiedz
@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.
  • Odpowiedz