Съдържание
В урока се обясняват особеностите на алгоритъма на генератора на случайни числа в Excel и се демонстрира как да се използват функциите RAND и RANDBETWEEN за генериране на случайни числа, дати, пароли и други текстови низове в Excel.
Преди да се запознаем с различните техники за генериране на случайни числа в Excel, нека дефинираме какво всъщност представляват те. На обикновен английски език случайните данни са поредица от числа, букви или други символи, в които липсва какъвто и да е модел.
Случайността има най-различни приложения в криптографията, статистиката, лотарията, хазарта и много други области. И тъй като тя винаги е била търсена, от древни времена съществуват различни методи за създаване на случайни числа, като например хвърляне на монети, хвърляне на зарове, разбъркване на карти за игра и т.н. Разбира се, в този урок няма да разчитаме на такива "екзотични" техники и ще се съсредоточим върхукакво може да предложи генераторът на случайни числа на Excel.
Генератор на случайни числа в Excel - основи
Въпреки че генераторът на случайни числа в Excel преминава всички стандартни тестове за случайност, той не генерира вярно случайни числа. Но не го отписвайте веднага :) Псевдослучаен числата, получени от функциите за случаен избор на Excel, са подходящи за много цели.
Нека разгледаме по-подробно алгоритъма на генератора на случайни числа в Excel, за да знаете какво можете да очаквате от него и какво не.
Подобно на повечето компютърни програми, генераторът на случайни числа в Excel произвежда псевдослучайни числа Това за вас означава, че на теория случайните числа, генерирани от Excel, са предсказуеми, при условие че някой знае всички подробности за алгоритъма на генератора. Това е причината, поради която той никога не е бил документиран и едва ли някога ще бъде. Е, какво знаем за генератора на случайни числа в Excel?
- Функциите RAND и RANDBETWEEN на Excel генерират псевдослучайни числа от Униформа разпространение Добър пример за равномерно разпределение е хвърлянето на един зар. Резултатът от хвърлянето е шест възможни стойности (1, 2, 3, 4, 5, 6) и всяка от тях е еднакво вероятна. За по-научно обяснение, моля, проверете wolfram.com.
- Няма начин да се засее функцията RAND или RANDBETWEEN на Excel, за която се говори, че се инициализира от системното време на компютъра. семена Това е началната точка за генериране на поредица от случайни числа. Всеки път, когато се извиква функцията за случайни числа в Excel, се използва ново семе, което връща уникална случайна поредица. С други думи, когато използвате генератора на случайни числа в Excel, не можете да получите повтаряща се поредица с функцията RAND или RANDBETWEEN, нито с VBA, нито по друг начин.
- В ранните версии на Excel, преди Excel 2003, алгоритъмът за генериране на случайни числа имаше сравнително малък период (по-малко от 1 милион неповтарящи се случайни последователности) и се провали на няколко стандартни теста за случайност при дълги случайни последователности. Така че, ако някой все още работи със стара версия на Excel, по-добре не използвайте функцията RAND с големи симулационни модели.
Ако търсите вярно случайни данни, вероятно можете да използвате генератор на случайни числа от трета страна, като например www.random.org, чиято случайност идва от атмосферния шум. Те предлагат безплатни услуги за генериране на случайни числа, игри и лотарии, цветови кодове, случайни имена, пароли, буквено-цифрови низове и други случайни данни.
Добре, това доста дълго техническо въведение приключва и преминаваме към практични и по-полезни неща.
Функция RAND на Excel - генериране на случайни реални числа
Сайтът RAND Функцията в Excel е една от двете функции, специално разработени за генериране на случайни числа. Тя връща случайно десетично число (реално число) между 0 и 1.
RAND() е променлива функция, което означава, че при всяко изчисление на работния лист се генерира ново случайно число. Това се случва всеки път, когато извършвате някакво действие в работния лист, например актуализирате формула (не непременно формулата RAND, а всяка друга формула в листа), редактирате клетка или въвеждате нови данни.
Функцията RAND е налична във всички версии на Excel 365 - 2000.
Тъй като функцията RAND на Excel няма аргументи, просто въвеждате =RAND()
в една клетка и след това копирайте формулата в колкото клетки искате:
А сега нека направим още една крачка напред и напишем няколко формули RAND, за да генерираме случайни числа според вашите условия.
Формула 1. Посочете горната гранична стойност на диапазона
Генериране на случайни числа между нула и N стойност, умножавате функцията RAND по N:
RAND()* NНапример, за да създадете поредица от случайни числа, по-големи или равни на 0, но по-малки от 50, използвайте следната формула:
=RAND()*50
Забележка: Горната гранична стойност никога не се включва във върнатата случайна последователност. Например, ако искате да получите случайни числа между 0 и 10, включително 10, правилната формула е =RAND()*11
.
Формула 2. Генериране на случайни числа между две числа
За да създадете случайно число между две зададени от вас числа, използвайте следната формула RAND:
RAND()*( B - A )+ AКъде: A е долната гранична стойност (най-малкото число), а B е горната гранична стойност (най-голямото число).
Например, за да генерирате случайни числа между 10 и 50, можете да използвате следната формула:
=RAND()*(50-10)+10
Забележка: Тази формула за случаен избор никога няма да върне число, равно на най-голямото число от посочения диапазон ( B стойност).
Формула 3. Генериране на случайни цели числа в Excel
За да накарате функцията RAND на Excel да създава произволни цели числа, вземете някоя от гореспоменатите формули и я обвийте във функцията INT.
Създаване на случайни цели числа между 0 и 50:
=INT(RAND()*50)
Генериране на случайни цели числа между 10 и 50:
=INT(RAND()*(50-10)+10)
Функция RANDBETWEEN на Excel - генериране на случайни цели числа в зададен диапазон
RANDBETWEEN е друга функция, предоставена от Excel за генериране на случайни числа. Тя връща случайни числа. цели числа в посочения от вас диапазон:
RANDBETWEEN(долна част, горна част)Очевидно, b отдолу е най-малкото число, а топ е най-голямото число в диапазона на случайните числа, които искате да получите.
Подобно на RAND, RANDBETWEEN на Excel е променлива функция и връща ново произволно цяло число при всяко преизчисляване на електронната таблица.
Например, за да генерирате случайни цели числа между 10 и 50 (включително 10 и 50), използвайте следната формула RANDBETWEEN:
=СРЕДНА СТОЙНОСТ МЕЖДУ(10, 50)
Функцията RANDBETWEEN в Excel може да създава както положителни, така и отрицателни числа. Например, за да получите списък с произволни цели числа от -10 до 10, въведете следната формула в работния си лист:
=RANDBETWEEN(-10, 10)
Функцията RANDBETWEEN е налична в Excel 365 - Excel 2007. В по-ранните версии можете да използвате формулата RAND, показана в Пример 3 по-горе.
По-нататък в това ръководство ще намерите още няколко примера с формули, демонстриращи как да използвате функцията RANDBETWEEN за генериране на случайни стойности, различни от цели числа.
Съвет. В Excel 365 и Excel 2021 можете да използвате функцията за динамичен масив RANDARRAY, за да върнете масив от случайни числа между две числа, които сте посочили.
Създаване на случайни числа с определени десетични знаци
Въпреки че функцията RANDBEETWEEN в Excel е създадена за връщане на случайни цели числа, можете да я накарате да връща случайни десетични числа с колкото искате знака след десетичната запетая.
Например, за да получите списък от числа с един знак след десетичната запетая, умножете долната и горната стойност по 10 и след това разделете получената стойност на 10:
RANDBETWEEN( долна стойност * 10, най-висока стойност * 10)/10Следната формула RANDBETWEEN връща случайни десетични числа между 1 и 50:
=СРЕДНО МЕЖДУ(1*10, 50*10)/10
По подобен начин, за да генерирате случайни числа между 1 и 50 с 2 знака след десетичната запетая, умножете аргументите на функцията RANDBETWEEN по 100 и след това разделете резултата също на 100:
=РАЗСТОЯНИЕ МЕЖДУ(1*100, 50*100) / 100
Как да генерирате случайни дати в Excel
За да върнете списък с произволни дати между две зададени дати, използвайте функцията RANDBETWEEN в комбинация с DATEVALUE:
RANDBETWEEN(СТОЙНОСТ НА ДАТА( начална дата ), DATEVALUE( крайна дата ))Например, за да получите списъка с дати между 1 юни 2015 г. и 30 юни 2015 г. включително, въведете следната формула в работния си лист:
=RANDBETWEEN(DATEVALUE("1-Jun-2015"),DATEVALUE("30-Jun-2015"))
Вместо това можете да използвате функцията DATE вместо DATEVALUE:
=RANDBETWEEN(DATE(2015,6,1),DATEVALUE(2015,6,30))
Не забравяйте да приложите формата за дата към клетката(ите) и ще получите списък с произволни дати, подобен на този:
За редица разширени опции, като например генериране на случайни делнични дни или уикенди, вижте Разширен генератор на случайни дати.
Как да вмъкнете случайни времена в Excel
Като не забравяте, че във вътрешната система на Excel времената се съхраняват като десетични знаци, можете да използвате стандартната функция RAND на Excel, за да вмъкнете случайни реални числа, след което просто да приложите формата на времето към клетките:
За връщане на случайни времена според вашите критерии са необходими по-специфични формули за случайни времена, както е показано по-долу.
Формула 1. Генериране на случайни времена в посочения диапазон
За да вмъкнете произволни времена между две зададени от вас времена, използвайте функцията TIME или TIMEVALUE в комбинация с Excel RAND:
ВРЕМЕ( начален час )+RAND() * (ВРЕМЕ( начален час ) - ВРЕМЕ( крайно време )) TIMEVALUE( начален час )+RAND() * (СТОЙНОСТ НА ВРЕМЕТО( начален час ) - TIMEVALUE( крайно време ))Например, за да вмъкнете произволен час между 6:00 и 17:30 ч., можете да използвате някоя от следните формули:
=ВРЕМЕ(6,0,0) + RAND() * (ВРЕМЕ(17,30,0) - ВРЕМЕ(6,0,0))
=СТОЙНОСТ НА ВРЕМЕТО("6:00 Ч.") + RAND() * (СТОЙНОСТ НА ВРЕМЕТО("17:30 Ч.") - СТОЙНОСТ НА ВРЕМЕТО("6:00 Ч."))
Формула 2. Генериране на случайни дати и часове
Създаване на списък с произволни дати и часове , използвайте комбинации от функциите RANDBETWEEN и DATEVALUE:
RANDBETWEEN(СТОЙНОСТ НА ДАТА( начална дата) , DATEVALUE( крайна дата )) + RANDBETWEEN(СТОЙНОСТ НА ВРЕМЕТО( начален час ) * 10000, СТОЙНОСТ НА ВРЕМЕТО( крайно време ) * 10000)/10000Ако искате да вмъкнете произволни дати между 1 юни 2015 г. и 30 юни 2015 г. с час между 7:30 и 18:00 ч., ще използвате следната формула:
=RANDBETWEEN(DATEVALUE("1-юни-2015"), DATEVALUE("30-юни-2015")) + RANDBETWEEN(TIMEVALUE("7:30 AM") * 10000, TIMEVALUE("18:00 PM") * 10000) / 10000
Можете също така да задавате дати и часове, като използвате съответно функциите DATE и TIME:
=RANDBETWEEN(DATE(2015,6,1), DATE(2015,6,30)) + RANDBETWEEN(TIME(7,30,0) * 10000, TIME(18,0,0) * 10000) / 10000
Генериране на случайни букви в Excel
За да се върне произволна буква, е необходима комбинация от три различни функции:
=CHAR(RANDBETWEEN(CODE("A"),CODE("Z"))
Къде: A е първият символ, а Z е последният символ в диапазона от букви, които искате да включите (в азбучен ред).
В горната формула:
- CODE връща цифрови ANSI кодове за посочените букви.
- RANDBETWEEN приема числата, върнати от функциите CODE, като долна и горна стойност на диапазона.
- CHAR преобразува произволни ANSI кодове, върнати от RANDBETWEEN, в съответните букви.
Забележка: Тъй като кодовете на ANSI са различни за главни и малки букви, тази формула е отчитане на малки и големи букви .
Ако някой е запомнил наизуст таблицата с кодовете на символите ANSI, нищо не пречи да въведете кодовете директно във функцията RANDBETWEEN.
Например, за да получите произволни Големи букви (UPPERCASE) между A (код 65 по ANSI) и Z (код ANSI 90), пишете:
=CHAR(RANDBETWEEN(65, 90))
Да генерирате малки букви от a (код ANSI 97) към z (код 122 по ANSI) се използва следната формула:
=CHAR(RANDBETWEEN(97, 122))
Вмъкване на произволен специален символ, като например !" # $ % & ' ( ) * + , - . /, използвайте функцията RANDBETWEEN с дъно на 33 (ANSI код за "!") и топ параметър, зададен на 47 (ANSI код за "/").
=CHAR(RANDBETWEEN(33,47))
Генериране на текстови низове и пароли в Excel
За да създадете произволен текстов низ в Excel, трябва просто да свържете няколко функции CHAR / RANDBEETWEEN.
Например, за да генерирате списък с пароли, състоящ се от 4 символа, можете да използвате формула, подобна на тази:
=RANDBETWEEN(0,9) & CHAR(RANDBETWEEN(65,90)) & CHAR(RANDBETWEEN(97, 122)) & CHAR(RANDBETWEEN(33,47))
За да направя формулата по-компактна, предоставих кодовете ANSI директно във формулата. Четирите функции връщат следните случайни стойности:
РАНДЕМАН МЕЖДУ(0,9)
- връща случайни числа между 0 и 9.CHAR(RANDBETWEEN(65,90))
- връща случайни UPPERCASE букви между A и Z .CHAR(RANDBETWEEN(97, 122))
- връща случайни малки букви между a и z .CHAR(RANDBETWEEN(33,47))
- връща случайни специални символи.
Текстовите низове, генерирани с горната формула, ще бъдат нещо като " 4Np# " или " 2Yu& ".
Едно предупреждение! Ако използвате подобна формула за създаване на случайни пароли, те няма да са силни. Разбира се, нищо не казва, че не можете да генерирате по-дълги текстови низове чрез верижно свързване на повече функции CHAR / RANDBETWEEN. Не е възможно обаче да се рандомизира редът или символите, т.е. 1-вата функция винаги връща число, 2-рата функция връща главна буква и т.н.
Ако търсите усъвършенстван генератор на случайни пароли в Excel, който може да създава текстови низове с всякаква дължина и модел, може да искате да проверите възможностите на Advanced Random Generator за тестови низове.
Освен това имайте предвид, че текстовите низове, генерирани с горната формула, ще се променят при всяко преизчисляване на работния лист. За да сте сигурни, че вашите низове или пароли ще останат същите след създаването им, ще трябва да спрете функцията RANDBETWEEN да актуализира стойностите, което ни води директно към следващия раздел.
Как да предотвратите преизчисляването на RAND и RANDBETWEEN
Ако искате да получите постоянен набор от случайни числа, дати или текстови низове, които няма да се променят при всяко преизчисляване на листа, използвайте една от следните техники:
- За да спрете преизчисляването на функциите RAND или RANDBETWEEN в една клетка , изберете тази клетка, преминете към лентата с формули и натиснете F9, за да замените формулата с нейната стойност.
- За да предотвратите преизчисляването на произволна функция на Excel, използвайте функцията Paste Special> Values (Вмъкване на специални стойности). Изберете всички клетки с произволната формула, натиснете Ctrl + C, за да ги копирате, след това щракнете с десния бутон на мишката върху избрания диапазон и щракнете върху Специално вмъкване > Стойности .
За да научите повече за тази техника за "замразяване" на случайни числа, вижте Как да заменим формулите със стойности.
Как да генерирате уникални случайни числа в Excel
Нито една от функциите за случаен избор на Excel не може да създаде уникални случайни стойности. Ако искате да създадете списък със случайни числа без дубликати , изпълнете следните стъпки:
- Използвайте функцията RAND или RANDBETWEEN, за да генерирате списък със случайни числа. Създайте повече стойности, отколкото ви трябват, защото някои от тях ще бъдат дублирани и ще бъдат изтрити по-късно.
- Преобразувайте формулите в стойности, както е обяснено по-горе.
- Премахнете дублиращите се стойности, като използвате вградения инструмент на Excel или нашия усъвършенстван инструмент за премахване на дубликати за Excel.
Повече решения можете да намерите в този урок: Как да генерираме случайни числа без дубликати.
Разширен генератор на случайни числа за Excel
След като вече знаете как да използвате функциите за случаен избор в Excel, нека ви покажа един по-бърз, по-лесен и свободен от формули начин за създаване на списък със случайни числа, дати или текстови низове в работните ви листове.
AbleBits Random Generator for Excel е проектиран като по-мощна и удобна за потребителя алтернатива на функциите RAND и RANDBETWEEN на Excel. Той работи с всички версии на Microsoft Excel 2019, 2016, 2013, 2010, 2007 и 2003 еднакво добре и решава повечето проблеми с качеството и използваемостта на стандартните функции за случаен принцип.
Алгоритъм на генератора на случайни числа AbleBits
Преди да покажем нашия генератор на случайни числа в действие, ще ви дам няколко основни бележки за неговия алгоритъм, за да знаете какво точно ви предлагаме.
- Генераторът на случайни числа AbleBits за Excel е базиран на алгоритъма Mersenne Twister, който се счита за индустриален стандарт за висококачествена псевдослучайна обработка.
- Използваме версия MT19937, която създава нормално разпределена последователност от 32-битови цели числа с много дълъг период от 2^19937 - 1, което е повече от достатъчно за всички възможни сценарии.
- Генерираните по този метод случайни числа са с много високо качество. Генераторът на случайни числа е преминал успешно множество тестове за статистическа случайност, включително добре познатите тестове NIST Statistical Test Suite и Diehard, както и някои от тестовете за случайност TestU01 Crush.
За разлика от функциите за случайни числа в Excel, нашият генератор на случайни числа създава постоянни случайни стойности които не се променят при преизчисляване на електронната таблица.
Както вече беше отбелязано, този усъвършенстван генератор на случайни числа за Excel предлага начин за създаване на различни случайни стойности без формули (и следователно без грешки :), като например:
- Случайни цели или десетични числа, включително уникални числа
- Случайни дати (работни дни, уикенди или и двете, а по желание - уникални дати)
- Случайни текстови низове, включително пароли с дадена дължина и модел, или по маска
- Случайни булеви стойности TRUE и FALSE
- Случаен избор от персонализирани списъци
А сега нека видим генератора на случайни числа в действие, както обещахме.
Генериране на случайни числа в Excel
С генератора на случайни числа AbleBits създаването на списък със случайни числа е толкова лесно, колкото да щракнете върху Генериране на бутон.
Генериране на уникални случайни цели числа
Всичко, което трябва да направите, е да изберете диапазона, който ще бъде попълнен със случайни цели числа, да зададете долната и горната стойност и, по желание, да проверите Уникални стойности кутия.
Генериране на случайни реални числа (десетични дроби)
По подобен начин можете да генерирате поредица от случайни десетични числа в посочения от вас диапазон.
Създаване на случайни дати в Excel
За дати нашият генератор на случайни числа предлага следните опции:
- Генериране на случайни дати за определен период от време - въвеждате долната дата в От и горната дата в полето За кутия.
- Включете работни дни, почивни дни или и двете.
- Генериране на уникални дати.
Генериране на случайни текстови низове и пароли
Освен случайни числа и дати, с този генератор на случайни числа можете лесно да създавате случайни буквено-цифрови низове с определени набори от символи. Максималната дължина на низа е 99 символа, което позволява генерирането на наистина силни пароли.
Уникална опция, предоставена от AbleBits Random Number Generator, е създаването на произволни текстови низове по маска Това е много полезна функция за генериране на глобално уникални идентификатори (GUID), пощенски кодове, SKU и т.н.
Например, за да получите списък с произволни GUID, изберете шестнадесетичния набор от символи и въведете ????????-????-????-???????????? в Маска както е показано на снимката на екрана:
Ако искате да изпробвате нашия генератор на случайности, можете да го изтеглите по-долу като част от нашия Ultimate Suite за Excel.
Налични изтегляния
Примери за случайни формули (.xlsx файл)
Ultimate Suite 14-дневна напълно функционална версия (.exe файл)