1. Приведенные ниже функции возвращают большое (обычно 30-разрядное) случайное число и случайное число в некотором диапазоне:
1 nt bigrancK )
{ return RAND_MAX*rand( ) + randO, } int randint(i nt 1. int u)
{ return 1 + bigrandO % (u-1+1), }
2. Чтобы выбрать m целых из диапазона 0. .п-1, следует выбрать произвольное значение i из этого диапазона, а затем вернуть значения i, i+1,..., i+m-1, при необходимости округляя их к нулю. В этом методе каждое число выбирается с вероятностью m/n, но некоторые наборы имеют существенно большую вероятность выбора, чем все остальные.
3. Если выбрано меньше, чем п/2 чисел, вероятность того, что некоторое число еще не выбрано, оказывается больше 1/2. Поэтому отсутствующее в выборке число будет выбрано в среднем менее чем за 2 хода. Логика такая же, как для монеты, которую нужно в среднем бросить дважды, чтобы выпал орел.
Опубликовал vovan666
April 17 2013 00:07:00 ·
0 Комментариев ·
3463 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.