Спершу припустимо, що ви хочете зробити вибірку всередині
x + y + z = 1
0 ≤ x ≤ 1
0 ≤ y ≤ 1
0 ≤ z ≤ 1
Це не має великої різниці, оскільки точка вибірки все ще буде лежати у запитуваній області з великою ймовірністю.
Тепер вам залишається вибір вибір точки від симплексу . У 3d прикладі ви отримуєте 2d симплекс (трикутник), реалізований у 3d.
Як рівномірно підібрати крапку, було обговорено в цьому дописі (див. Коментарі).
Для вашої проблеми це означатиме, що ви берете випадкових чисел з інтервалу ( 0 , 1 ) , потім додаєте 0 і 1, щоб отримати список n + 1 чисел. Ви сортуєте список, а потім записуєте відмінності між двома послідовними елементами. Це дає вам список російськихn−1(0,1)01n+1n номерів, який становитиме . Крім того, ця вибірка є рівномірною. Цю ідею можна знайти у Дональда Б. Рубіна, байесівської завантажувальної Енн. Статист. 9, 1981, 130-134.1
Наприклад ( ) у вас є три випадкових числа,тоді ви отримуєте відсортовану послідовність,і це дає відмінності, і будуючи ці чотири числа дорівнюють 1.n = 40.4 0.2 0.1
0 0.1 0.2 0.4 1
0.1 0.1 0.2 0.6
Інший підхід полягає в наступному: спочатку зразок з гіперкуба (тобто ви забули про нього x+y+z=1
), а потім нормалізуйте точку зразка. Нормалізація - це проекція від -гіперкуби до d - 1 -прости. Слід зрозуміти, що точки в центрі симплекса мають більше "точок попереднього зображення", ніж зовнігг- 1. Отже, якщо ви маєте рівномірну пробу з гіперкуба, це не дає вам рівномірного відбору проб у симплексі. Однак якщо взяти зразок з гіперкуба з відповідним експоненціальним розподілом, цей ефект скасовується. Малюнок дає вам уявлення про те, як обидва способи будуть проводити вибірку. Однак я віддаю перевагу методу «сортування» через його просту форму. Це також простіше здійснити.