40 lines
1.2 KiB
Plaintext
40 lines
1.2 KiB
Plaintext
$ include "seed7_05.s7i";
|
|
include "float.s7i";
|
|
|
|
const array integer: treatmentGroup is [] (85, 88, 75, 66, 25, 29, 83, 39, 97);
|
|
const array integer: controlGroup is [] (68, 41, 10, 49, 16, 65, 32, 92, 28, 98);
|
|
const array integer: both is treatmentGroup & controlGroup;
|
|
|
|
const func integer: pick (in integer: at, in integer: remain, in integer: accu, in integer: treat) is func
|
|
result
|
|
var integer: picked is 0;
|
|
begin
|
|
if remain = 0 then
|
|
picked := ord(accu > treat);
|
|
else
|
|
picked := pick(at - 1, remain - 1, accu + both[at], treat);
|
|
if at > remain then
|
|
picked +:= pick(at - 1, remain, accu, treat);
|
|
end if;
|
|
end if;
|
|
end func;
|
|
|
|
const proc: main is func
|
|
local
|
|
var integer: experimentalResult is 0;
|
|
var integer: treat is 0;
|
|
var integer: total is 1;
|
|
var integer: le is 0;
|
|
var integer: gt is 0;
|
|
var integer: i is 0;
|
|
begin
|
|
for experimentalResult range treatmentGroup do
|
|
treat +:= experimentalResult;
|
|
end for;
|
|
total := 19 ! 10; # Binomial coefficient
|
|
gt := pick(19, 9, 0, treat);
|
|
le := total - gt;
|
|
writeln("<= : " <& 100.0 * flt(le) / flt(total) digits 6 <& "% " <& le);
|
|
writeln(" > : " <& 100.0 * flt(gt) / flt(total) digits 6 <& "% " <& gt);
|
|
end func;
|