Программу я не смогу написать, но примерный алгоритм дам. Если (M = 1, 3, 5, 7, 8, 10, или 12) И (D <= 30), то (D = D + 1) Если (M = 1, 3, 5, 7, 8, 10) И (D = 31), то (M = M + 1, D = 1) Если (M = 12) И (D = 31), то (G = G + 1, M = 1, D = 1) Если (M = 4, 6, 9, 11) И (D <= 29), то (D = D + 1) Если (M = 4, 6, 9, 11) И (D = 30), то (M = M + 1, D = 1) Если (M = 2) И (D <= 27), то (D = D + 1) Если (M = 2) И (G mod 4 <> 0) И (D = 28), то (M = 3, D = 1) Если (M = 2) И (G mod 4 = 0) И (D = 28), то (D = D + 1) Если (M = 2) И (G mod 4 = 0) И (D = 29), то (M = 3, D = 1) Если (M = 2) И (G = 1900 или 2100) И (D = 28), то (M = 3, D = 1) В последней строчке я учёл разницу между Григорианским и Юлианским календарями. По Юлианскому после 28.02 1900 или 2100 года наступит 29.02. По Григорианскому наступит 01.03.
begin var arr := ArrRandomReal(ReadInteger('N ='), 0, 1); writeln('[0; 0.25): ', arr.Where(x->(x>=0) and (x<0.25)).Count); writeln('[0.25; 0.5): ', arr.Where(x->(x>=0.25) and (x<0.5)).Count); writeln('[0.5; 0.75): ', arr.Where(x->(x>=0.5) and (x<0.75)).Count); writeln('[0.75; 1): ', arr.Where(x->(x>=0.75) and (x<1)).Count); end.
Можете её запускать при разных N. У меня получилось так (четыре числа - число попавших в интервал): N = 10. 3, 1, 2, 4 N = 100. 21, 29, 21, 29 N = 1000. 272, 240, 241, 247 N = 10000. 2588, 2383, 2464, 2565
Результаты могут отличаться (массив из случайных чисел генерируется, всё-таки), но тенденция должна быть такой: в каждый интервал должны попадать примерно четверть всех точек, притом с увеличением N отклонение доли попавших в тот или иной полуинтервал должно отклоняться от 25% всё меньше.
Если (M = 1, 3, 5, 7, 8, 10, или 12) И (D <= 30), то (D = D + 1)
Если (M = 1, 3, 5, 7, 8, 10) И (D = 31), то (M = M + 1, D = 1)
Если (M = 12) И (D = 31), то (G = G + 1, M = 1, D = 1)
Если (M = 4, 6, 9, 11) И (D <= 29), то (D = D + 1)
Если (M = 4, 6, 9, 11) И (D = 30), то (M = M + 1, D = 1)
Если (M = 2) И (D <= 27), то (D = D + 1)
Если (M = 2) И (G mod 4 <> 0) И (D = 28), то (M = 3, D = 1)
Если (M = 2) И (G mod 4 = 0) И (D = 28), то (D = D + 1)
Если (M = 2) И (G mod 4 = 0) И (D = 29), то (M = 3, D = 1)
Если (M = 2) И (G = 1900 или 2100) И (D = 28), то (M = 3, D = 1)
В последней строчке я учёл разницу между Григорианским и Юлианским календарями.
По Юлианскому после 28.02 1900 или 2100 года наступит 29.02.
По Григорианскому наступит 01.03.
begin
var arr := ArrRandomReal(ReadInteger('N ='), 0, 1);
writeln('[0; 0.25): ',
arr.Where(x->(x>=0) and (x<0.25)).Count);
writeln('[0.25; 0.5): ',
arr.Where(x->(x>=0.25) and (x<0.5)).Count);
writeln('[0.5; 0.75): ',
arr.Where(x->(x>=0.5) and (x<0.75)).Count);
writeln('[0.75; 1): ',
arr.Where(x->(x>=0.75) and (x<1)).Count);
end.
Можете её запускать при разных N. У меня получилось так (четыре числа - число попавших в интервал):
N = 10.
3, 1, 2, 4
N = 100.
21, 29, 21, 29
N = 1000.
272, 240, 241, 247
N = 10000.
2588, 2383, 2464, 2565
Результаты могут отличаться (массив из случайных чисел генерируется, всё-таки), но тенденция должна быть такой: в каждый интервал должны попадать примерно четверть всех точек, притом с увеличением N отклонение доли попавших в тот или иной полуинтервал должно отклоняться от 25% всё меньше.