Функції RAND і RANDBETWEEN для генерації випадкових чисел в Excel

  • Поділитися Цим
Michael Brown

Зміст

У навчальному посібнику пояснюються особливості алгоритму роботи генератора випадкових чисел Excel та демонструється використання функцій РАНГ і РАНГМЕЖ для генерації випадкових чисел, дат, паролів та інших текстових рядків в Excel.

Перш ніж заглиблюватися в різні техніки генерації випадкових чисел в Excel, давайте визначимося, що це таке. Якщо говорити простою мовою, то випадкові дані - це послідовність цифр, букв або інших символів, в якій відсутня будь-яка закономірність.

Випадковість має безліч різноманітних застосувань у криптографії, статистиці, лотереї, азартних іграх та багатьох інших сферах. А оскільки вона завжди була затребувана, то з давніх часів існували різні методи створення випадкових чисел, такі як підкидання монет, кидання гральних кісток, тасування гральних карт і так далі. Звичайно, у цьому уроці ми не будемо спиратися на такі "екзотичні" методи і зосередимося нащо може запропонувати генератор випадкових чисел Excel.

    Генератор випадкових чисел Excel - основи

    Хоча генератор випадкових чисел Excel проходить всі стандартні тести на випадковість, він не генерує істинний випадкові числа. Але не списуйте його відразу :) Псевдовипадковий Числа, отримані за допомогою випадкових функцій Excel, підходять для багатьох цілей.

    Розглянемо докладніше алгоритм роботи генератора випадкових чисел Excel, щоб ви знали, чого від нього можна очікувати, а чого не можна.

    Як і більшість комп'ютерних програм, генератор випадкових чисел Excel видає псевдовипадкові числа Для вас це означає, що теоретично випадкові числа, які генерує Excel, є передбачуваними за умови, що комусь відомі всі деталі алгоритму роботи генератора. Саме тому він ніколи не був задокументований і навряд чи колись буде. Що ж ми знаємо про генератор випадкових чисел в Excel?

    • Функції Excel RAND і RANDBETWEEN генерують псевдовипадкові числа з Уніформа розподіл або прямокутний розподіл, де існує рівна ймовірність для всіх значень, яких може набути випадкова величина. Хорошим прикладом рівномірного розподілу є підкидання грального кубика. Результатом підкидання є шість можливих значень (1, 2, 3, 4, 5, 6), і кожне з цих значень має однакову ймовірність появи. Для більш наукового пояснення, будь ласка, відвідайте сайт wolfram.com.
    • Неможливо засіяти ні функцію Excel RAND, ні функцію RANDBETWEEN, які, за чутками, ініціалізуються з системного часу комп'ютера. Технічно, функція RANDBETWEEN посівний є відправною точкою для генерації послідовності випадкових чисел. І при кожному виклику випадкової функції Excel використовується нове насіння, яке повертає унікальну випадкову послідовність. Іншими словами, при використанні генератора випадкових чисел в Excel не можна отримати повторювану послідовність ні функцією RAND або RANDBETWEEN, ні за допомогою VBA, ні будь-якими іншими способами.
    • У ранніх версіях Excel, до Excel 2003, алгоритм генерації випадкових чисел мав відносно невеликий період (менше 1 мільйона неповторюваних послідовностей випадкових чисел) і не витримував декількох стандартних тестів на випадковість на довгих випадкових послідовностях. Тому, якщо хтось все ще працює зі старою версією Excel, то краще не використовувати функцію RAND з великими імітаційними моделями.

    Якщо ви шукаєте істинний випадкових даних, ви, ймовірно, можете використовувати сторонні генератори випадкових чисел, такі як www.random.org, випадковість яких походить від атмосферного шуму. Вони пропонують безкоштовні послуги з генерації випадкових чисел, ігор та лотерей, кольорових кодів, випадкових імен, паролів, алфавітно-цифрових рядків та інших випадкових даних.

    Гаразд, цей досить довгий технічний вступ закінчується і ми переходимо до практичних і більш корисних речей.

    Функція Excel RAND - генерування випадкових дійсних чисел

    На сьогоднішній день, на жаль, це не так. 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:

    =RANDBETWEEN(10, 50)

    Функція RANDBETWEEN в Excel може створювати як додатні, так і від'ємні числа. Наприклад, щоб отримати список випадкових цілих чисел від -10 до 10, введіть на робочому аркуші наступну формулу:

    =RANDBETWEEN(-10, 10)

    Функція RANDBETWEEN доступна в Excel 365 - Excel 2007. У більш ранніх версіях можна використовувати формулу RAND, продемонстровану в Прикладі 3 вище.

    Далі в цьому уроці ви знайдете ще кілька прикладів формул, що демонструють, як використовувати функцію СРЗНАЧ для генерації випадкових значень, відмінних від цілих чисел.

    Порада. В Excel 365 і Excel 2021 можна використовувати функцію динамічного масиву РАНДЕРРАЙ для повернення масиву випадкових чисел між будь-якими двома числами, які ви вкажете.

    Створювати випадкові числа із заданою кількістю знаків після коми

    Хоча функція RANDBEETWEEN в Excel була розроблена для повернення випадкових цілих чисел, ви можете змусити її повертати випадкові десяткові числа з будь-якою кількістю знаків після коми, яку ви хочете.

    Наприклад, щоб отримати список чисел з одним знаком після коми, необхідно помножити нижнє і верхнє значення на 10, а потім розділити отримане значення на 10:

    RANDBETWEEN( нижнє значення * 10, максимальне значення * 10)/10

    Наступна формула RANDBETWEEN повертає випадкові десяткові числа від 1 до 50:

    =RANGEBETWEEN(1*10, 50*10)/10

    Аналогічно, щоб згенерувати випадкові числа від 1 до 50 з 2 знаками після коми, потрібно помножити аргументи функції RANDBETWEEN на 100, а потім результат також розділити на 100:

    =RANGEBETWEEN(1*100, 50*100) / 100

    Як згенерувати випадкові дати в Excel

    Щоб повернути список випадкових дат між заданими двома датами, використовуйте функцію RANDBETWEEN в поєднанні з DATEVALUE:

    RANDBETWEEN(DATEVALUE( дата початку ), DATEVALUE( дата закінчення ))

    Наприклад, щоб отримати список дат з 1 червня 2015 року по 30 червня 2015 року включно, введіть у робочу таблицю наступну формулу:

    =RANDBETWEEN(DATEVALUE("1-Jun-2015"),DATEVALUE("30-Jun-2015"))

    Крім того, ви можете використовувати функцію DATE замість DATEVALUE:

    =RANGEBETWEEN(DATE(2015,6,1),DATEVALUE(2015,6,30))

    Не забудьте застосувати формат дати до комірки (комірок), і ви отримаєте список випадкових дат, подібний до цього:

    Для отримання додаткових опцій, таких як генерація випадкових робочих або вихідних днів, перегляньте Розширений генератор випадкових чисел для дат.

    Як вставити випадковий час в Excel

    Пам'ятаючи, що у внутрішній системі Excel час зберігається у вигляді десяткових дробів, можна скористатися стандартною функцією Excel РАНД для вставки випадкових дійсних чисел, а потім просто застосувати до комірок формат часу:

    Щоб повернути випадковий час відповідно до ваших критеріїв, потрібні більш конкретні випадкові формули, як показано нижче.

    Формула 1. генерувати випадкові часи в заданому діапазоні

    Щоб вставити випадковий час між будь-якими двома зазначеними часом, використовуйте функцію ВРЕМЯ або ЗНАЧЕННЯ ВРЕМЕНИ в поєднанні з функцією РАНД в Excel:

    ЧАС( час початку )+RAND() * (TIME( час початку ) - TIME( час закінчення )) TIMEVALUE( час початку )+RAND() * (TIMEVALUE( час початку ) - TIMEVALUE( час закінчення ))

    Наприклад, щоб вставити випадковий час між 6:00 ранку і 5:30 вечора, ви можете використовувати будь-яку з наведених нижче формул:

    =TIME(6,0,0) + RAND() * (TIME(17,30,0) - TIME(6,0,0))

    =TIMEVALUE("6:00") + RAND() * (TIMEVALUE("17:30") - TIMEVALUE("6:00"))

    Формула 2. генерація випадкових дат і часу

    Для створення списку випадкових дати і час використовуйте комбінації функцій RANDBETWEEN та DATEVALUE:

    RANDBETWEEN(DATEVALUE( дата початку) , DATEVALUE( дата закінчення )) + RANDBETWEEN(TIMEVALUE( час початку ) * 10000, TIMEVALUE( час закінчення ) * 10000)/10000

    Припустимо, ви хочете вставити випадкові дати між 1 червня 2015 року та 30 червня 2015 року з проміжком часу між 7:30 ранку та 18:00 вечора, наступна формула буде чудово працювати:

    = RANDBETWEEN(DATEVALUE("1-Jun-2015"), DATEVALUE("30-Jun-2015")) + RANDBETWEEN(TIMEVALUE("7:30 AM") * 10000, TIMEVALUE("18:00 PM") * 10000) / 10000

    Ви також можете вказати дату і час, використовуючи функції ДАТА і ЧАС відповідно:

    = 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.

    Наприклад, щоб отримати випадковий Великі літери між A (ANSI код 65) та Z (ANSI код 90), - пишете ви:

    =CHAR(RANDBETWEEN(65, 90))

    Для створення малі літери від a (код ANSI 97) до z (код ANSI 122), використовується наступна формула:

    =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 безпосередньо у формулі. Чотири функції повертають наступні випадкові значення:

    • RANDBETWEEN(0,9) - повертає випадкові числа від 0 до 9.
    • CHAR(RANDBETWEEN(65,90)) - повертає випадкові літери у верхньому регістрі між 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

    Якщо ви хочете отримати постійний набір випадкових чисел, дат або текстових рядків, які не будуть змінюватися при кожному перерахунку аркуша, скористайтеся одним з наступних способів:

    1. Щоб зупинити перерахунок функцій RAND або RANDBETWEEN в одна клітина виберіть цю комірку, перейдіть до рядка формул і натисніть F9, щоб замінити формулу її значенням.
    2. Щоб випадкова функція Excel не перераховувалася, скористайтеся функцією Вставка спеціальних значень. Виділіть всі комірки з випадковою формулою, натисніть Ctrl + C, щоб скопіювати їх, потім клацніть правою кнопкою миші по виділеному діапазону і натисніть Паста спеціальна > Цінності .

    Детальніше про цю техніку "заморожування" випадкових чисел див. у статті Як замінити формули значеннями.

    Як генерувати унікальні випадкові числа в Excel

    Жодна з випадкових функцій Excel не може створювати унікальні випадкові значення. Якщо потрібно створити список випадкових чисел без дублікатів виконайте такі дії:

    1. Використовуйте функцію RAND або RANDBETWEEN для створення списку випадкових чисел. Створюйте більше значень, ніж вам потрібно, оскільки деякі з них будуть дублікатами, які згодом будуть видалені.
    2. Перетворіть формули у значення, як описано вище.
    3. Видаляйте дублікати значень за допомогою вбудованого інструменту Excel або нашого розширеного засобу Duplicate Remover для 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, створює випадкові текстові рядки за маскою Це дуже корисна функція для генерації глобально унікальних ідентифікаторів (GUID), поштових індексів, SKU тощо.

    Наприклад, щоб отримати список випадкових GUID, виберіть шістнадцятковий набір символів і введіть ????????-????-????-???????????? в поле Маска як показано на скріншоті:

    Якщо ви зацікавлені в тому, щоб спробувати наш Генератор випадкових чисел, ви можете завантажити його нижче як частину нашого Ultimate Suite для Excel.

    Доступні для завантаження

    Приклади випадкових формул (файл .xlsx)

    Ultimate Suite 14-денна повнофункціональна версія (файл .exe)

    Майкл Браун — відданий ентузіаст технологій із пристрастю до спрощення складних процесів за допомогою програмних засобів. Маючи понад десятирічний досвід роботи в технологічній індустрії, він відточив свої навички роботи з Microsoft Excel і Outlook, а також із Google Таблицями та Документами. Блог Майкла присвячений тому, щоб поділитися своїми знаннями та досвідом з іншими, надаючи прості поради та навчальні посібники для підвищення продуктивності та ефективності. Незалежно від того, чи є ви досвідченим професіоналом чи початківцем, блог Майкла пропонує цінну інформацію та практичні поради щодо отримання максимальної користі від цих основних програмних інструментів.