[Excel] losowanie liczby z przedziału bez zera i do dwóch miejsc po przecinku

Czy bez używania VBA a tylko za pomocą formuł w excelu da się zrobić aby losowało mi liczbę z zakresu od +1 do -0,6 do dwóch miejsc po przecinku i nie zwracało wynik 0

Da się, chociaż dla wykluczenia zera będziesz potrzebował zrobić jakiś trik.

Masz funkcje =LOS() która zwraca ci dowolną wartość rzeczywistą z przedziału od 0 do 1. Więc wystarczy coś w stylu =LOS()*1,6-0,6 i zaokrąglić czy obciąć do 2 miejsc po przecinku.

Szansa na wylosowanie zera z dokładnością do 2 miejsc po przecinku jest mała, ale musisz zdecydować co się wtedy stanie, bo zaburzasz rozkład prawdopodobieństwa.

Stworzyłem taką formułę
=ZAOKR(LOS()1+LOS()(-0,6);2)
I wygląda na to że spełnia moje założenia ale jednak zwraca dość często 0. Ma ktoś pomysł jak zrobić aby pomijał wynik 0?

Ta funkcja w ogóle nie spełnia założeń, które podałeś. Rozkład prawdopodobieństwa jest zły i nie jest równomierny.

x1
Powyzej masz rozkład funkcji, którą podałem ci wyżej na przykładzie próby 1000 losów
x2
A tutaj masz dla twojej funkcji

Przy losie na 1084 zero dla pierwszego rozkładu otrzymałem 3 razy dla drugiego rozkładu 9.
Jeżeli dość często zwraca Ci wynik 0 to problem leży gdzie indziej.

1 polubienie

Witaj @juh
Można spróbować losować podwójnie.
Z zakresu od 0,01 do 1,00 i od -0,60 do -0,01
Wtedy na pewno nie wybierze 0
Rozwiązaniem jest formuła losująca z dwóch losowań w podanych zakresach.
LOS.ZAKR(dolna_granica;górna_granica)
Ważne: Tylko liczby całkowite
Więc Twój poszukiwany wynik należy podzielić przez 1000
np. 10/1000 = 0,01
Dodatkowo należy użyć funkcji
WYBIERZ(indeks;warunek1;warunek2)
aby wybierało z wylosowanej liczby poniżej lub powyżej 0, czyli bez 0

Cała formułka wygląda następująco
=(WYBIERZ(LOS.ZAKR(1;2);LOS.ZAKR(-600;-10);LOS.ZAKR(10;1000)))/1000

Po wpisaniu formułki do komórki, możesz sprawdzać F9 losowanie liczb.

Podpowiedź znalazłem tutaj i zmodyfikowałem na Twoje potrzeby.

Pozdrawiam serdecznie

1 polubienie

:partying_face: Też nie . W cytowanym przykładzie to zadziała bo liczba elementów zbioru jest identyczna, a tutaj nie. Musiałbyś rozbudować wyrażenie

tt

Da się zrobić tą metodą ale mało elegancko by to wyglądało bo musiałbyś to rozdzielić na 8 warunków zamiast na 2.

Jeżeli wprowadzenie błędu rzędu 0,06% Ci nie przeszkadza to możesz po prostu dodać 0,01 jeżeli wylosujesz 0.

Hej,

A gdyby nie bawić się zbytnio i pozwolić, by to funkcja “jeżeli” powodowała przeliczenie funkcji “los” jeszcze raz, gdy wylosuje się 0,375 zgodnie z pierwszą funkcją podaną przez @aesereht? Byłoby coś takiego:

=JEŻELI(LOS()=0,375;ZAOKR(LOS()*1,6-0,6;2);ZAOKR(LOS()*1,6-0,6;2))

Pozdrawiam,
Dimatheus