Сколько раз нужно подбрасывать монету, чтобы три раза подряд выпал орел или решка? сколько раз в среднем нужно ее подбросить, чтобы получить такой результат?
на эти вопросы мы постараемся ответить. вам нужно написать программу, которая имитирует подбрасывание монеты. для решения этой вам понадобится генератор случайных чисел. считайте, что монета является "правильной", то есть вероятность выпадения орла или решки одинаковая.
вам необходимо:
1. сымитировать подбрасывание монеты до тех пор, пока три раза подряд не выпадет орел или решка
2. повторить такой опыт 10 раз
3. посчитать, сколько бросков в среднем нужно сделать до появления последовательности из трех орлов или решек
условимся считать, что 0 обозначает выпадение орла (heads), а 1 выпадение решки (tails)
используйте генератор целых чисел.
вывод программы должен выглядеть следующим образом:
каждая строка представляет собой одну серию опытов, где обозначена последовательности выпадения, а затем общее число бросков
в последней строке программы должно быть выведено среднее число бросков до выпадения последовательности из трех орлов или решек.
вам не нужно подключать модуль random, это уже сделано за вас.
var
i: integer;
x, y: real;
function f(x: real): real;
begin
f := sqrt(3 * x);
end;
begin
Line(0, 240, 620, 240);
Line(300, 0, 300, 900);
TextOut(310, 10, 'y=sqrt(3x)');
x := 0;
repeat
x := x + 0.03;
y := f(x);
SetPixel(round(300 + 10 * x), round(240 - 10 * f(x)), clGreen);
until 300 + 10 * x > 620
end.
с апгрейдом
uses graphabc;
const
scale = 20;
var
i: integer;
x, y: real;
function f(x: real): real;
begin
if x < 0 then
f := 0
else
f := sqrt(3 * x);
end;
begin
Window.Init(0, 0, 1000, 1000, clMoneyGreen);
Window.CenterOnScreen;
Line(0, Window.Height div 2, Window.Width, Window.Height div 2);
Line(Window.Width div 2, 0, Window.Width div 2, Window.Height);
TextOut(Window.Width div 2 + 5, 10, 'y=sqrt(3x)');
x := -1;
repeat
SetPixel(round(Window.Width div 2 + scale * x), round(Window.Height div 2 - scale * f(x)), clRed);
x := x + 0.03;
until scale * x > Window.Width div 2
end.
const
n=5;
var
a:array[1..n,1..n] of integer;
x:array[1..n] of double;
i,j,k:byte;
begin
Randomize;
Writeln('*** Исходный массив ***');
for i:=1 to n do begin
for j:=1 to n do begin
a[i,j]:=Random(51)-25;
Write(a[i,j]:4)
end;
Writeln
end;
Writeln('*** Массив x ***');
for j:=1 to n do begin
x[j]:=0; k:=0;
for i:=1 to n do
if a[i,j] mod 2=0 then begin
x[j]:=x[j]+a[i,j]; Inc(k)
end;
if k>0 then x[j]:=x[j]/k;
Write(x[j]:0:5,' ')
end;
Writeln
end.
Тестовое решение:
*** Исходный массив ***
-10 18 -8 -15 5
-21 -18 6 -2 9
-7 22 -4 3 14
21 16 -10 -18 -9
17 3 -14 -18 12
*** Массив x ***
-10.00000 9.50000 -6.00000 -12.66667 13.00000