ВУЗ:
Составители:
Рубрика:
123
N записей, получаем задачу — как корректно выбрать из этого массива n
записей, при условии, что
Nn
<
.
Наиболее очевиден подход, когда любая запись выбирается с одной и той
же вероятностью близкой к
Nn /
. Однако, при использовании такого метода в
выборке получается
n записей только в среднем, причем стандартное
отклонение равно
))/(1( Nnn − , выборка может оказаться или слишком
большой, или слишком малой для достижения желаемых результатов.
В литературе [Кнут] приводится алгоритм "корректной выборки"
лишенный этого недостатка. Идея такого подхода — если
m записей уже
отобрано, мы должны включить
)1(
+
t -ю запись в выборку с вероятностью
)/()( tNmn −−
. Эта вероятность выражается именно такой величиной,
поскольку из всех возможных способов выборка
n записей из N таким
образом, что
m из них отбираются из первых t , в точности
tN
mn
mn
tN
mn
tN
−
−
=
⎟
⎟
⎠
⎞
⎜
⎜
⎝
⎛
−
−
⎟
⎟
⎠
⎞
⎜
⎜
⎝
⎛
−−
−−
/
1
1
,
с возможной последующей выборкой
1
+
t
элемента.
Рассмотрим алгоритм выборки чисел из заданной последовательности,
решающий задачу выбора
n
записей из
N
, где
Nn
≤
<
0
. Данный алгоритм
реализует описанный выше метод "корректной выборки":
1.
0=t
,
0=m
2. Выработать псевдослучайное число
U , равномерно
распределенное между нулем и единицей.
3.
If
mnUtN −≥− )(
then Включить запись в выборку;
1+= mm
,
1
+
=
tt
else
4.
1+= tt
.
5. Повторить шаги 2-4.
N записей, получаем задачу — как корректно выбрать из этого массива n
записей, при условии, что n < N .
Наиболее очевиден подход, когда любая запись выбирается с одной и той
же вероятностью близкой к n / N . Однако, при использовании такого метода в
выборке получается n записей только в среднем, причем стандартное
отклонение равно n(1 − (n / N )) , выборка может оказаться или слишком
большой, или слишком малой для достижения желаемых результатов.
В литературе [Кнут] приводится алгоритм "корректной выборки"
лишенный этого недостатка. Идея такого подхода — если m записей уже
отобрано, мы должны включить (t + 1) -ю запись в выборку с вероятностью
(n − m) /( N − t ) . Эта вероятность выражается именно такой величиной,
поскольку из всех возможных способов выборка n записей из N таким
образом, что m из них отбираются из первых t , в точности
⎛ N − t − 1⎞ ⎛ N − t ⎞ n − m
⎜⎜ ⎟⎟ / ⎜⎜ ⎟⎟ = ,
⎝ n − m − 1⎠ ⎝ n − m ⎠ N − t
с возможной последующей выборкой t + 1 элемента.
Рассмотрим алгоритм выборки чисел из заданной последовательности,
решающий задачу выбора n записей из N , где 0 < n ≤ N . Данный алгоритм
реализует описанный выше метод "корректной выборки":
1. t = 0 , m=0
2. Выработать псевдослучайное число U, равномерно
распределенное между нулем и единицей.
3. If ( N − t )U ≥ n − m then Включить запись в выборку; m = m + 1 , t = t + 1
else
4. t = t + 1 .
5. Повторить шаги 2-4.
123
Страницы
- « первая
- ‹ предыдущая
- …
- 121
- 122
- 123
- 124
- 125
- …
- следующая ›
- последняя »
