В черговий раз закопався у випадковості, в смислі - в рандомізацію. Цікава штучка. Все буття на цих випадковостях побудовано. Так що воно не тільки для тренування власного інтелекту годиться. Цілу науку навіть придумали - кризовий менеджмент - про управління ризиками і прогнозовану оцінку випадковостей. Ну, а вся решта наука уже давно сидить на цих випадковостях - від підбору адекватної виборки для експерименту до статистичної обробки результату з отриманням достатнього ступеня достовірності.
Класичний EXCEL вже давно вміє працювати з випадковостями і навіть їх самостійно створювати з допомогою функції =RAND(СЛЧИСЛО). Але цифірки, отримані таким чином, будуть псевдовипадковими, тобто вирахуваними за формулами і таблицями. Справжньою випадковістю там і не пахне...
Є в інтернеті цікавий сайт
random org. Який вміє видобувати справжні випадкові числа шляхом аналізу радіошумів. Хвалять його всі в інтернетах за коректну рандомізацію. Але вбивати вручну цифірки звідти в свій Ексель якось зовсім негонорово (тим більше, якщо їх пару тисяч), все-таки 21 століття за вікном, та й я на машиністку не вчився... Знайшов на днях, як того сайта присобачити в Ексель через юзер-функцію. Кому цікаво - ось тут інфа:
https://www.reddit.com/r/excel/comments ... d_to_lend/
Якщо по простому - треба намалювати в екселі ось таку функцію, зберегти її і запускати, як і будь яку іншу вбудовану екселівську функцію:
Option Explicit
Function GetNumbers(ByVal Min, ByVal Max, ByVal Count)
Dim HTTP
Dim URL
URL = "
https://www.random.org/integers/?num=" & Count & "&min=" & Min & "&max=" & Max & "&col=1&base=10&format=plain&rnd=new"
Set HTTP = CreateObject("WinHttp.WinHttpRequest.5.1") 'also works with "Microsoft.XMLHTTP"
HTTP.Open "GET", URL, False
HTTP.Send
GetNumbers = Split(HTTP.ResponseText, vbCrLf)
Set HTTP = Nothing
End Function
Проблема там тільки в тому, що Ексель отримує результати з того сайту в текстовому форматі, він їх як цифри не сприймає і обробляти їх просто так не виходить. Довго ковирявся, знайшов таки варіант: знаходимо у вкладці "Дані" - "Текст по столбцам" і гонимо ті всі текстові цифри в іншу комірку, уже в цифрі. Щоб не морочитись вручну, можна якогось примітивного макроса наваяти. Тільки так. Інші відомі екселівські чотири способи перетворення тексту в числа не справились...
Вирішив перевірити, чого ж того random.org так хвалять, наскільки рівномірну виборку випадкових цифірок він дає... Найкраще плавність виборки показує така штука, як коефіцієнт варіації. То я макросами зробив купу ітерацій (бо обновлюватися та хитра юзер-функція на F9 самостійно не хоче, лише якщо її повторно ввести). Терпіння дочекатися, поки комп з інтернету ту купу цифірок по одній загонить, вистачило до 3 тисяч - процес досить повільний, але по ходу я прозрів: шикарна і досить рівномірна виборка випадкових чисел вийшла - вже на п'ятому десятку коефіцієнт варіації опустився майже до 5% - то дуже класний результат! І на такому рівні, потихеньку ще знижуючись, протримався до трьох тисяч ітерацій. Включив я для порівняння паралельно свій старий файлик (колись пробував такий рандом робити стандартними екселівськими функціями) - далеко тому екселю до random.org!! Навіть на трьох тисячах (а то досить велика виборка для статистики) коеф. варіації оригінального екселівського рандому біля 9%. Так що окрім криптографічних задач, рандомізація з того сайту набагато достовірніша і схожа на ту, яка трапляється в реальному житті. Якщо для розрахунків хочеться реальної рандомізації - random.org без альтернатив
. А в комплекті з екселівськими електронними таблицями - просто маст хев. Супер, що вдалося їх разом поєднати, я давно якийсь такий спосіб шукав!
Коефіцієнт варіації виборки випадкових значень з сайта random.org при 3 тис. ітерацій - 5,2%:
Коефіцієнт варіації виборки випадкових значень, добутий стандартною Екселівською функцією =RAND при 3 тис. ітерацій - 9%.
Досить багато як для такої великою виборки... Графіки там і там не зовсім показові - треба їх трохи до ума довести - краще для наочності глянути на мінімум і максимум (на скрінах видно), щоб оцінити зазор, наскільки "гуляє" кожна виборка випадкових чисел. Ну і коефіцієнт варіації, який дає змогу уже в цифрах побачити оте "гуляння" і розкид від середнього значення тих двох масивів випадкових чисел: одного з random.org і другого чисто екселівського. Середнє значення по виборках, до речі, там і там одинакове... А "разброс" окремих значень огого який різний
. Я би в нарди за екселівським рандомайзером грати не сідав - можна без трусів лишитися з такою нерівномірною виборкою. І ніякий кризовий менеджмент не поможе
.
ps. до речі, про статистику. Ось кращий підручник з варіаційної статистики - там на якихось 200 сторінках шикарно, дохідливо і досить повно викладено всі хитромудрі статистичні методи. Рідкісна штука. В електронній формі я її не знайшов... Це моя особиста, паперова, ще з університету. Раритет. Скільки книжок по статистиці я передивився - по суті, це найкращий підручник для розуміння статистики. Випущений Львівським університетом, 1977 рік видання. Хороша книжка. При нагоді якось відсканую, викладу в інтернет. А то папір не вічний...