Рандомизатор c вероятностью на Pascal
Program random5;;
var
a:Integer;
begin
randomize;
a:= random(101);
if a <= 10 then // 1
Writeln(1);
if (a <= 20) and (a > 10) then // 2
Writeln(2);
if (a <= 30) and (a > 20) then // 3
Writeln(3);
if (a <= 40) and (a > 30) then // 4
Writeln(4);
if (a <= 50) and (a > 40) then // 5
Writeln(5);
if (a <= 60) and (a > 50) then // 6
Writeln(6);
if (a <= 70) and (a > 60) then // 7
Writeln(7);
if (a <= 80) and (a > 70) then // 8
Writeln(8);
if (a <= 90) and (a > 80) then // 9
Writeln(9);
if (a <= 100) and (a > 90) then // 10
Writeln(10);
end.
Как это работает?
Переменной "a" присваивается случайное число от 1 до 100
в условиях указан диапазон, чем он больше тем больше вероятность срабатывание оператора. но не так всё просто. Ниже я объясню как изменять вероятность
чтобы изменить вероятность, нужно изменить два числа
if a <= __ then // 1
Writeln(1);
if (a <= 20) and (a > __) then // 2
Как правильно рассчитать и вписать цифры?
Формула для 1
if (a <= z)
Z=X
Формула для от 2 до 10
if (a <= z ) and (...)
if (a <= E) and (a > F)
пусть X задания вероятность
формулы:
E=X+Z
F=Z
например вероятность выпада "2" должна быть равна 25%
по формуле
X=25%
E=25+10=35
F=10
if a <= 10 then // 1
Writeln(1);
if (a <= 35) and (a > 10) then // 2
Но сумма всех вероятностей (X ) должна равна 100%
например: вероятность выпада "4" должна равна 20% а выпада "5" 5%
будет выглядеть так:
if a <= 10 then // 1
Writeln(1);
if (a <= 20) and (a > 10) then // вероятность 10%
Writeln(2);
if (a <= 30) and (a > 20) then // вероятность 10%
Writeln(3);
if (a <= 50) and (a > 30) then // вероятность 20%
Writeln(4);
if (a <= 65) and (a > 50) then // вероятность 5%
Writeln(5);
if (a <= 75) and (a > 65) then // вероятность 10%
Writeln(6);
Можно добавлять больше вариантов, просто добавьте такой блок после последнего оператора
if (a <= E) and (a > F) then
Writeln(?);
За место "E" и "F" запишите цифры по формуле, которая была выше.





