Консультация № 44185
25.05.2006, 11:36
0.00 руб.
0 5 2
Доброго всем.
Есть числа от 1 до 100, например.
Надо выдавать случайные числа с вероятностью, такие, что чем ближе к 20, например, тем вероятность больше.
Вроде понятно написал. Если что уточните - не ругайте.

Обсуждение

Неизвестный
25.05.2006, 12:09
общий
это ответ
Здравствуйте, Kazakh!

Можно, например, так, как написано в приложении. Здесь c-ваше число 20, r-случайное число, p- период.
Смысл работы таков:
Выбираем случайное число.
Если оно входит в интервал (c-p;c+p), то выводим его, иначе увеличиваем интервал.
Если интервал включает в себя промежуток [1;100], то выводим получившееся число.

Изменение периода p подберите как вам будет удобнее. Чем он меньше, тем больше вероятность получения чисел наиболее близких к c и меньше вероятность получить числа более отдаленные от c.

Удачи!

Приложение:
const c=20; // Ваше число 20var i,r,p:integer;begin randomize; memo1.Lines.Clear; for i:=1 to 30 do begin p:=0; repeat p:=p+5; r:=random(100)+1; until ((c+p>100) and (c-p<1)) or ((r<c+p) and (r>c-p)); memo1.Lines.Append(inttostr(r)); end;end;
Неизвестный
25.05.2006, 13:09
общий
это ответ
Здравствуйте, Kazakh!
Оно, конечно, можно и так, через N-ное место. Но проще воспользоваться функцией из модуля <b>Math</b>
<font color="blue">function RandG(Mean, StdDev: Extended): Extended;</font>
которая генерирует случайное число, подчиняющееся статистике Гаусса:
<font color="green">Mean</font> - среднее значение (20, у Вас);
<font color="green">StdDev</font> - ширина разброса
А так, есть формулы пересчета случайных чисел, равномерно разбросанных в некотором интервале, в случайные числа, разбросанные вокруг среднего по определенному закону
Неизвестный
25.05.2006, 13:10
общий
к Устинову и автору вопроса: это не так просто, как Вам кажется.
давно
Мастер-Эксперт
425
4118
25.05.2006, 13:45
общий
Развивая логически Ваше условие дальше, приходим к выводу, что 20 - это уже 100%-я вероятность. Но в таком случае генератор случайных чисел Вам не нужен, просто на все телодвижения выдавайте в ответ 20 и все. :)Я думаю, Вам нужно очень хорошо подумать над условием и сформулировать конкретные (т.е. с приведением чисел) вероятности на выпадение того или иного числа. Иначе то, что Вы написали, не имеет никакого смысла. :)
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
25.05.2006, 13:59
общий
Я просто урезал проблему до минимума.А вероятности и диапазон и ещё кое-что меняются. Так что 100% не будет :)
Форма ответа