Permutation test: Difference between revisions

m
→‎{{header|REXX}}: added/changed whitespace and comments.
(→‎{{header|Perl 6}}: GLRify, combinations is now built-in)
m (→‎{{header|REXX}}: added/changed whitespace and comments.)
Line 1,037:
=={{header|REXX}}==
This REXX program is modeled after the   '''C'''   version, with some generalizations and optimization added.
<lang rexx>/*REXX program doesperforms a permutation test on N + M subjects (volunteers): */
/* ↑ ↑ */
/* │ │ */
/* │ └─────control population. */
/* └────────treatment population. */
n=9
data=85 88 75 66 25 29 83 39 97 68 41 10 49 16 65 32 92 28 98
w=words(data); m=w-n
say 'volunteer population given treatment:' right(n,length(w))
say ' control population given a placebo:' right(m,length(w))
say
say 'treatment population efficacy % (percentages):' subword(data,1,n)
say ' control population placebo % (percentages):' subword(data,n+1)
say
do v= 0 for w ; #.v=word(data,v+1) ; end
treat=0; do i= 0 to n-1 ; treat=treat+#.i ; end
total tot=1; do j= w19 to m+1 by -1 ; totaltot=totaltot*j ; end
do k= n9 to 1 by -1 ; totaltot=totaltot/k ; end
gt=picker(n+m, n, 0)
le=totaltot-gt
say "<= " format(100*le/totaltot,,3)'%' le /*display number /*showwith 3 decimal places.*/
say " > " format(100*gt/totaltot,,3)'%' gt /* gt " " " " " " */
exit /*stick a fork in it, we're all done. */
/*────────────────────────────────────────────────────────────────────────────*/
/*──────────────────────────────────PICKER subroutine───────────────────*/
picker: procedure expose #. treat; parse arg it,rest,eff
if rest==0 then return eff>treat
if it>rest then q=picker(it-1, rest, eff)
else q=0
itP=it-1
return picker(itP, rest-1, eff+#.itP) + q</lang>
{{out}}'''output''' &nbsp; using the default input:
<pre>
volunteer population given treatment: 9