Spis treści
Tutorial wyjaśnia specyfikę algorytmu generatora liczb losowych w Excelu i demonstruje, jak używać funkcji RAND i RANDBETWEEN do generowania losowych liczb, dat, haseł i innych ciągów tekstowych w Excelu.
Zanim zagłębimy się w różne techniki generowania liczb losowych w Excelu, zdefiniujmy, czym one właściwie są. W prostym języku angielskim dane losowe to seria liczb, liter lub innych symboli, którym brakuje jakiegokolwiek wzorca.
Losowość ma wiele różnych zastosowań w kryptografii, statystyce, loterii, hazardzie i wielu innych dziedzinach. A ponieważ zawsze było na nią zapotrzebowanie, różne metody tworzenia liczb losowych istniały od czasów starożytnych, takie jak rzucanie monetami, toczenie kości, tasowanie kart do gry i tak dalej. Oczywiście w tym poradniku nie będziemy polegać na takich "egzotycznych" technikach i skupimy się naco ma do zaoferowania generator liczb losowych Excela.
Generator liczb losowych w Excelu - podstawy
Chociaż generator losowy Excela przechodzi wszystkie standardowe testy losowości, nie generuje on prawdziwy liczby losowe. ale nie odpisuj od razu :) Pseudolosowe liczby produkowane przez funkcje losowe Excela są w porządku dla wielu celów.
Przyjrzyjmy się bliżej algorytmowi generatora losowego w Excelu, abyś wiedział, czego możesz się po nim spodziewać, a czego nie.
Jak większość programów komputerowych, generator liczb losowych Excela produkuje liczby pseudolosowe poprzez zastosowanie pewnych wzorów matematycznych.Co to oznacza dla Ciebie, to fakt, że teoretycznie liczby losowe generowane przez Excela są przewidywalne, pod warunkiem, że ktoś zna wszystkie szczegóły algorytmu generatora.To jest powód, dla którego nigdy nie został on udokumentowany i raczej nie będzie.No właśnie, co wiemy o generatorze liczb losowych w Excelu?
- Funkcje RAND i RANDBETWEEN programu Excel generują liczby pseudolosowe na podstawie Uniform dystrybucja rozkład prostokątny, w którym istnieje równe prawdopodobieństwo dla wszystkich wartości, jakie może przyjąć zmienna losowa. Dobrym przykładem rozkładu jednostajnego jest rzut pojedynczą kością. Wynik rzutu to sześć możliwych wartości (1, 2, 3, 4, 5, 6) i każda z tych wartości ma takie samo prawdopodobieństwo wystąpienia. Bardziej naukowe wyjaśnienie można znaleźć na stronie wolfram.com.
- Nie ma możliwości posiania funkcji Excel RAND lub RANDBETWEEN, które podobno są inicjalizowane z czasu systemowego komputera.Technicznie rzecz biorąc, a nasiona jest punktem wyjścia do generowania sekwencji liczb losowych. I za każdym razem, gdy wywoływana jest funkcja losowa Excela, używany jest nowy materiał siewny, który zwraca unikalną sekwencję losową. Innymi słowy, podczas korzystania z generatora liczb losowych w Excelu nie można uzyskać powtarzalnej sekwencji za pomocą funkcji RAND lub RANDBETWEEN, ani za pomocą VBA, ani w żaden inny sposób.
- We wczesnych wersjach Excela, przed Excelem 2003, algorytm generowania liczb losowych miał stosunkowo mały okres (mniej niż 1 milion niepowtarzających się ciągów liczb losowych) i nie zdał kilku standardowych testów losowości na długich ciągach losowych. Jeśli więc ktoś nadal pracuje na starej wersji Excela, lepiej niech nie używa funkcji RAND przy dużych modelach symulacyjnych.
Jeśli szukasz prawdziwy dane losowe, prawdopodobnie możesz użyć generatora liczb losowych innej firmy, takiego jak www.random.org, którego losowość pochodzi z szumu atmosferycznego. Oferują one bezpłatne usługi generowania liczb losowych, gier i loterii, kodów kolorów, losowych nazw, haseł, ciągów alfanumerycznych i innych danych losowych.
Ok, kończy się ten dość długi techniczny wstęp i przechodzimy do rzeczy praktycznych i bardziej przydatnych.
Funkcja RAND w Excelu - generowanie losowych liczb rzeczywistych
Na stronie RAND Funkcja w Excelu jest jedną z dwóch funkcji specjalnie zaprojektowanych do generowania liczb losowych. Zwraca losową liczbę dziesiętną (liczbę rzeczywistą) w przedziale od 0 do 1.
RAND() jest funkcją zmienną, co oznacza, że przy każdym obliczeniu arkusza generowana jest nowa liczba losowa. A dzieje się tak za każdym razem, gdy wykonujesz jakiekolwiek działanie na arkuszu, na przykład aktualizujesz formułę (niekoniecznie formułę RAND, tylko każdą inną formułę na arkuszu), edytujesz komórkę lub wprowadzasz nowe dane.
Funkcja RAND jest dostępna we wszystkich wersjach programu Excel 365 - 2000.
Ponieważ funkcja RAND w Excelu nie ma argumentów, wystarczy wpisać =RAND()
w komórce, a następnie skopiować formułę do tylu komórek, ile chcesz:
A teraz zróbmy krok dalej i napiszmy kilka formuł RAND, aby wygenerować losowe liczby zgodnie z twoimi warunkami.
Wzór 1. Określenie górnej wartości granicznej zakresu
Aby wygenerować liczby losowe od zera do dowolnego N wartość, zwielokrotniasz funkcję RAND przez N:
RAND()* NNa przykład, aby utworzyć ciąg liczb losowych większych lub równych 0, ale mniejszych niż 50, użyj następującej formuły:
=RAND()*50
Uwaga. Górna wartość graniczna nigdy nie jest zawarta w zwróconej sekwencji losowej. Na przykład, jeśli chcesz uzyskać liczby losowe z przedziału od 0 do 10, w tym 10, właściwa formuła to =RAND()*11
.
Formuła 2. Generowanie liczb losowych pomiędzy dwoma liczbami
Aby utworzyć liczbę losową pomiędzy dwoma dowolnymi, określonymi przez użytkownika liczbami, należy użyć następującej formuły RAND:
RAND()*( B - A )+ AGdzie A jest dolną wartością graniczną (najmniejszą liczbą), a B to górna wartość graniczna (największa liczba).
Na przykład, aby wygenerować liczby losowe w przedziale od 10 do 50, możesz użyć następującej formuły:
=RAND()*(50-10)+10
Uwaga. Ta formuła losowa nigdy nie zwróci liczby równej największej liczbie z określonego zakresu ( B wartość).
Formuła 3. Generowanie losowych liczb całkowitych w Excelu
Aby funkcja RAND w Excelu produkowała losowe liczby całkowite, weź którąś z powyższych formuł i zawiń ją w funkcję INT.
Tworzenie losowych liczb całkowitych z przedziału od 0 do 50:
=INT(RAND()*50)
Wygenerowanie losowych liczb całkowitych pomiędzy 10 a 50:
=INT(RAND()*(50-10)+10)
Funkcja Excel RANDBETWEEN - generowanie losowych liczb całkowitych w określonym zakresie
RANDBETWEEN to kolejna funkcja programu Excel służąca do generowania liczb losowych.Zwraca ona losowe liczby całkowite w określonym przez użytkownika zakresie:
RANDBETWEEN(bottom, top)Oczywiście, b ottom jest najniższą liczbą, a top jest najwyższą liczbą w zakresie liczb losowych, które chcesz uzyskać.
Podobnie jak RAND, RANDBETWEEN w Excelu jest funkcją zmienną i zwraca nową losową liczbę całkowitą za każdym razem, gdy arkusz kalkulacyjny dokonuje ponownych obliczeń.
Na przykład, aby wygenerować losowe liczby całkowite pomiędzy 10 a 50 (w tym 10 i 50), użyj następującej formuły RANDBETWEEN:
=RANDBETWEEN(10, 50)
Funkcja RANDBETWEEN w programie Excel może tworzyć zarówno liczby dodatnie, jak i ujemne. Na przykład, aby uzyskać listę losowych liczb całkowitych od -10 do 10, wprowadź w arkuszu następującą formułę:
=RANDBETWEEN(-10, 10)
Funkcja RANDBETWEEN jest dostępna w programie Excel 365 - Excel 2007. We wcześniejszych wersjach można skorzystać z formuły RAND zademonstrowanej w powyższym przykładzie 3.
W dalszej części tego poradnika znajdziesz jeszcze kilka przykładów formuł demonstrujących jak wykorzystać funkcję RANDBETWEEN do generowania wartości losowych innych niż liczby całkowite.
Wskazówka W programach Excel 365 i Excel 2021 można użyć funkcji tablicy dynamicznej RANDARRAY, aby zwrócić tablicę liczb losowych pomiędzy dowolnymi dwiema określonymi przez użytkownika liczbami.
Tworzenie liczb losowych z określonymi miejscami po przecinku
Chociaż funkcja RANDBEETWEEN w Excelu została zaprojektowana do zwracania losowych liczb całkowitych, możesz zmusić ją do zwracania losowych liczb dziesiętnych z dowolną liczbą miejsc po przecinku.
Na przykład, aby uzyskać listę liczb z jednym miejscem po przecinku, mnożysz dolne i górne wartości przez 10, a następnie dzielisz zwróconą wartość przez 10:
RANDBETWEEN( wartość dolna * 10, najwyższa wartość * 10)/10Poniższa formuła RANDBETWEEN zwraca losowe liczby dziesiętne z przedziału od 1 do 50:
=RANDBETWEEN(1*10, 50*10)/10
W podobny sposób, aby wygenerować liczby losowe z przedziału od 1 do 50 z dokładnością do 2 miejsc po przecinku, mnożymy argumenty funkcji RANDBETWEEN przez 100, a następnie wynik dzielimy również przez 100:
=RANDBETWEEN(1*100, 50*100) / 100
Jak wygenerować losowe daty w programie Excel
Aby zwrócić listę losowych dat pomiędzy podanymi dwoma datami, należy użyć funkcji RANDBETWEEN w połączeniu z DATEVALUE:
RANDBETWEEN(DATEVALUE( data rozpoczęcia ), DATEVALUE( data końcowa ))Na przykład, aby uzyskać listę dat pomiędzy 1-Jun-2015 a 30-June-2015 włącznie, wprowadź następującą formułę w swoim arkuszu:
=RANDBETWEEN(DATEVALUE("1-Jun-2015"),DATEVALUE("30-Jun-2015"))
Alternatywnie możesz użyć funkcji DATE zamiast DATEVALUE:
=RANDBETWEEN(DATE(2015,6,1),DATEVALUE(2015,6,30))
Pamiętaj, aby zastosować format daty do komórki (komórek), a otrzymasz listę losowych dat podobnych do tej:
Aby uzyskać szereg zaawansowanych opcji, takich jak generowanie losowych dni tygodnia lub weekendów, sprawdź Advanced Random Generator for dates.
Jak wstawić losowe czasy w programie Excel
Pamiętając, że w wewnętrznym systemie Excela czasy są przechowywane jako liczby dziesiętne, możesz użyć standardowej funkcji Excel RAND, aby wstawić losowe liczby rzeczywiste, a następnie po prostu zastosować format czasu do komórek:
Aby zwrócić losowe czasy według twoich kryteriów, wymagane są bardziej szczegółowe formuły losowe, jak pokazano poniżej.
Formuła 1. Wygeneruj losowe czasy w określonym zakresie
Aby wstawić losowe czasy pomiędzy dowolnymi dwoma określonymi przez użytkownika czasami, należy użyć funkcji TIME lub TIMEVALUE w połączeniu z funkcją Excel RAND:
CZAS( godzina rozpoczęcia )+RAND() * (CZAS( godzina rozpoczęcia ) - CZAS( koniec czasu )) TIMEVALUE( godzina rozpoczęcia )+RAND() * (WARTOŚĆ CZASU( godzina rozpoczęcia ) - TIMEVALUE( koniec czasu ))Na przykład, aby wstawić losowy czas pomiędzy 6:00 AM a 5:30 PM, możesz użyć jednej z następujących formuł:
=TIME(6,0,0) + RAND() * (TIME(17,30,0) - TIME(6,0,0))
=TIMEVALUE("6:00 AM") + RAND() * (TIMEVALUE("5:30 PM") - TIMEVALUE("6:00 AM"))
Formuła 2. Generowanie losowych dat i godzin
Aby stworzyć listę losowych daty i godziny , użyj kombinacji funkcji RANDBETWEEN i DATEVALUE:
RANDBETWEEN(DATEVALUE( data rozpoczęcia) , DATEVALUE( data końcowa )) + RANDBETWEEN(TIMEVALUE( godzina rozpoczęcia ) * 10000, TIMEVALUE( koniec czasu ) * 10000)/10000Przypuszczając, że chcesz wstawić losowe daty między 1 czerwca 2015 r. a 30 czerwca 2015 r. z czasem między 7:30 AM a 6:00 PM, poniższa formuła będzie działać traktować:
=RANDBETWEEN(DATEVALUE("1-Jun-2015"), DATEVALUE("30-Jun-2015")) + RANDBETWEEN(TIMEVALUE("7:30 AM") * 10000, TIMEVALUE("6:00 PM") * 10000) / 10000
Można również podawać daty i godziny, używając odpowiednio funkcji DATE i TIME:
=RANDBETWEEN(DATE(2015,6,1), DATE(2015,6,30)) + RANDBETWEEN(TIME(7,30,0) * 10000, TIME(18,0,0) * 10000) / 10000
Generowanie losowych liter w programie Excel
Aby zwrócić losową literę, wymagana jest kombinacja trzech różnych funkcji:
=CHAR(RANDBETWEEN(CODE("A"),CODE("Z")))
Gdzie A jest pierwszym znakiem, a Z jest ostatnim znakiem w zakresie liter, które chcesz uwzględnić (w porządku alfabetycznym).
W powyższym wzorze:
- CODE zwraca numeryczne kody ANSI dla podanych liter.
- RANDBETWEEN przyjmuje liczby zwrócone przez funkcje CODE jako dolną i górną wartość zakresu.
- CHAR konwertuje losowe kody ANSI zwrócone przez RANDBETWEEN na odpowiadające im litery.
Uwaga. Ponieważ kody ANSI są różne dla znaków UPPERCASE i małych liter, wzór ten jest rozróżnianie wielkości liter .
Jeśli ktoś pamięta na pamięć tablicę kodów znaków ANSI, nic nie stoi na przeszkodzie, aby kody te dostarczyć bezpośrednio do funkcji RANDBETWEEN.
Na przykład, aby uzyskać losowe litery UPPERCASE między A (kod ANSI 65) oraz Z (kod ANSI 90), piszesz:
=CHAR(RANDBETWEEN(65, 90))
Wygenerować małe litery z a (kod ANSI 97) do z (kod ANSI 122), używasz następującego wzoru:
=CHAR(RANDBETWEEN(97, 122))
Aby wstawić losowy znak specjalny, taki jak ! " # $ % & ' ( ) * + , - . /, użyj funkcji RANDBETWEEN z dół parametr ustawiony na 33 (kod ANSI dla "!") i top parametr ustawiony na 47 (kod ANSI dla "/").
=CHAR(RANDBETWEEN(33,47))
Generowanie ciągów tekstowych i haseł w programie Excel
Aby utworzyć losowy ciąg tekstowy w programie Excel, wystarczy konkatenować kilka funkcji CHAR / RANDBEETWEEN.
Na przykład, aby wygenerować listę haseł składających się z 4 znaków, możesz użyć formuły podobnej do tej:
=RANDBETWEEN(0,9) & CHAR(RANDBETWEEN(65,90)) & CHAR(RANDBETWEEN(97, 122)) & CHAR(RANDBETWEEN(33,47))
Aby formuła była bardziej zwarta, dostarczyłem kody ANSI bezpośrednio w formule. Cztery funkcje zwracają następujące wartości losowe:
RÓŻNICA MIĘDZY(0,9)
- zwraca losowe liczby z przedziału od 0 do 9.CHAR(RANDBETWEEN(65,90))
- zwraca losowe litery UPPERCASE pomiędzy A oraz Z .CHAR(RANDBETWEEN(97, 122))
- zwraca losowe małe litery pomiędzy a oraz z .CHAR(RANDBETWEEN(33,47))
- zwraca losowe znaki specjalne.
Ciągi tekstowe wygenerowane za pomocą powyższej formuły byłyby czymś w rodzaju " 4Np# " lub " 2Yu& ".
Słowo ostrzeżenia! Jeśli użyjesz podobnej formuły do tworzenia losowych haseł, nie będą one silne. Oczywiście, nic nie mówi, że nie można generować dłuższych ciągów tekstowych poprzez łańcuchowanie więcej funkcji CHAR / RANDBETWEEN. Jednak niemożliwe jest randomizowanie kolejności lub znaków, tj. 1. funkcja zawsze zwraca liczbę, 2. funkcja zwraca dużą literę i tak dalej.
Jeśli szukasz zaawansowanego generatora haseł losowych w Excelu zdolnego do tworzenia ciągów tekstowych o dowolnej długości i wzorze, możesz chcieć sprawdzić możliwości Advanced Random Generator for test strings.
Należy również pamiętać, że ciągi tekstowe wygenerowane za pomocą powyższej formuły będą się zmieniać przy każdym ponownym obliczeniu arkusza. Aby zapewnić, że twoje ciągi lub hasła pozostaną takie same po ich utworzeniu, będziesz musiał powstrzymać funkcję RANDBETWEEN przed aktualizowaniem wartości, co prowadzi nas bezpośrednio do następnej sekcji.
Jak zapobiec ponownemu obliczaniu RAND i RANDBETWEEN
Jeśli chcesz uzyskać stały zestaw losowych liczb, dat lub ciągów tekstowych, które nie będą się zmieniać przy każdym przeliczeniu arkusza, użyj jednej z poniższych technik:
- Aby zatrzymać funkcje RAND lub RANDBETWEEN przed ponownym obliczaniem w jedna komórka , wybierz tę komórkę, przejdź do paska formuły i naciśnij F9, aby zastąpić formułę jej wartością.
- Aby zapobiec ponownemu obliczaniu funkcji losowej w Excelu, użyj funkcji Wklej Specjalne> Wartości. Zaznacz wszystkie komórki z formułą losową, naciśnij Ctrl + C, aby je skopiować, a następnie kliknij prawym przyciskiem myszy wybrany zakres i kliknij Wklej Specjalnie > Wartości .
Aby dowiedzieć się więcej o tej technice "zamrażania" liczb losowych, zobacz Jak zastąpić formuły wartościami.
Jak wygenerować unikalne liczby losowe w programie Excel
Żadna z funkcji losowych Excela nie może tworzyć unikalnych wartości losowych.Jeśli chcesz utworzyć listę liczb losowych bez duplikatów , wykonaj następujące czynności:
- Użyj funkcji RAND lub RANDBETWEEN, aby wygenerować listę liczb losowych. Utwórz więcej wartości niż faktycznie potrzebujesz, ponieważ niektóre będą duplikatami, które należy później usunąć.
- Przekształć wzory na wartości, jak wyjaśniono powyżej.
- Usuń zduplikowane wartości za pomocą wbudowanego narzędzia programu Excel lub naszego zaawansowanego Duplicate Remover for Excel.
Więcej rozwiązań można znaleźć w tym tutorialu: Jak generować liczby losowe bez duplikatów.
Zaawansowany generator liczb losowych dla Excela
Teraz, gdy wiesz, jak używać funkcji losowych w programie Excel, pozwól mi zademonstrować ci szybszy, łatwiejszy i wolny od formuły sposób tworzenia listy losowych liczb, dat lub ciągów tekstowych w twoich arkuszach.
AbleBits Random Generator for Excel został zaprojektowany jako bardziej wydajna i przyjazna dla użytkownika alternatywa dla funkcji RAND i RANDBETWEEN programu Excel. Działa ze wszystkimi wersjami programu Microsoft Excel 2019, 2016, 2013, 2010, 2007 i 2003 równie dobrze i rozwiązuje większość problemów z jakością i użytecznością standardowych funkcji losowych.
Algorytm generatora liczb losowych AbleBits
Zanim pokażemy nasz Generator Losowy w akcji, pozwól mi przedstawić kilka kluczowych uwag na temat jego algorytmu, abyś wiedział dokładnie co oferujemy.
- AbleBits Random Number Generator for Excel jest oparty na algorytmie Mersenne Twister, który jest uważany za standard przemysłowy dla wysokiej jakości pseudo randomizacji.
- Używamy wersji MT19937, która produkuje normalnie rozłożony ciąg 32-bitowych liczb całkowitych z bardzo długim okresem 2^19937 - 1, co jest więcej niż wystarczające dla wszystkich wyobrażalnych scenariuszy.
- Generator liczb losowych generowany tą metodą jest bardzo wysokiej jakości. Generator liczb losowych przeszedł pomyślnie wiele testów na losowość statystyczną, w tym znane testy NIST Statistical Test Suiteand Diehard oraz niektóre testy losowości TestU01 Crush.
W przeciwieństwie do funkcji losowych Excela, nasz Generator Liczb Losowych tworzy stałe wartości losowe które nie zmieniają się przy ponownym przeliczeniu arkusza kalkulacyjnego.
Jak już zauważono, ten zaawansowany Generator liczb losowych dla Excela oferuje wolny od formuły (a co za tym idzie bezbłędny :) sposób tworzenia różnych wartości losowych, takich jak:
- Losowe liczby całkowite lub dziesiętne, w tym liczby unikatowe
- Daty losowe (dni robocze, weekendy, lub oba, oraz opcjonalnie daty unikatowe)
- Losowe ciągi tekstowe, w tym hasła o określonej długości i wzorze, lub według maski
- Losowe wartości boolowskie TRUE i FALSE
- Wybór losowy z list własnych
A teraz, zgodnie z obietnicą, zobaczmy Generator liczb losowych w akcji.
Generowanie liczb losowych w programie Excel
Z AbleBits Random Number Generator, tworzenie listy liczb losowych jest tak proste, jak kliknięcie przycisku Wygeneruj przycisk.
Generowanie unikalnych losowych liczb całkowitych
Wszystko, co musisz zrobić, to wybrać zakres, który ma być wypełniony losowymi liczbami całkowitymi, ustawić dolną i górną wartość oraz, opcjonalnie, zaznaczyć opcję Unikalne wartości pudełko.
Generowanie losowych liczb rzeczywistych (dziesiętnych)
W podobny sposób można wygenerować serię losowych liczb dziesiętnych w określonym przez użytkownika zakresie.
Tworzenie losowych dat w programie Excel
W przypadku dat, nasz Generator liczb losowych zapewnia następujące opcje:
- Generowanie losowych dat dla określonego okresu czasu - wpisujesz dolną datę w Ze strony i górną datę w polu Do pudełko.
- Uwzględnij dni powszednie, weekendy lub oba.
- Generowanie unikalnych dat.
Generowanie losowych ciągów tekstowych i haseł
Oprócz losowych liczb i dat, dzięki temu generatorowi losowemu można łatwo tworzyć losowe ciągi alfanumeryczne z określonymi zestawami znaków. Maksymalna długość ciągu wynosi 99 znaków, co pozwala na generowanie naprawdę silnych haseł.
Unikalną opcją oferowaną przez AbleBits Random Number Generator jest tworzenie losowe ciągi tekstowe według maski Jest to bardzo przydatna funkcja do generowania globalnie unikalnych identyfikatorów (GUID), kodów pocztowych, SKU itp.
Na przykład, aby uzyskać listę losowych identyfikatorów GUID, należy wybrać zestaw znaków szesnastkowych i wpisać ????????-????-???????????? w polu Maska pole, jak pokazano na zrzucie ekranu:
Jeśli jesteś zainteresowany wypróbowaniem naszego Generatora Losowego, zapraszamy do pobrania go poniżej jako część naszego pakietu Ultimate Suite dla Excela.
Dostępne pliki do pobrania
Przykłady formuł losowych (plik .xlsx)
Ultimate Suite 14-dniowa w pełni funkcjonalna wersja (plik .exe)