Subtractive generator: Difference between revisions

m
→‎{{header|REXX}}: added/changed comments and whitespace, changed indentations, aligned statements.
(Added F# version)
m (→‎{{header|REXX}}: added/changed comments and whitespace, changed indentations, aligned statements.)
Line 1,431:
=={{header|REXX}}==
{{trans|PL/I}}
<lang rexx>/*REXX program uses a subtractive generator, and creates a sequence of random numbers. */
numeric digits 20; s.0=292929; s.1=1; billion=10**9 /* ◄────────┐ */
cI=55;numeric digits 20; cJ=24; cP=34; billion=1e9 /*same as─►─┘ */
cI=55; do i=2 to cI-1
s.i=mod(s(i-2) - s(i-1), billion)
end /*i*/
Cp=34
do j=0 to cI-1
r. do j=s(mod(cP*(j+1),0 to cI))-1
end /* r.j=s(mod(cP*/(j+1), cI))
do j=0 to cI-1 end /*j*/
m=219
m=219; Cj=24
do k=cI to m; x=k//cI
r.x=mod(r(mod( do k-=cI, cI)) - r(mod(k-cJ,to cI)),m; billion) _=k//cI
r._=mod(r(mod(k-cI, cI)) - r(mod(k-cJ, cI)), billion)
end /*m*/
do k=cI to m; end x=k/*m*/cI
t=235
do n=m+1 to t; y_=n//cI
r.y_=mod(r(mod(n-cI, cI)) - r(mod(n-cJ, cI)), billion)
say right(r.y_, 40)
end /*n*/
exit /*stick a fork in it, we're all done. */
/*──────────────────────────────────────────────────────────────────────────────────────*/
mod: procedure; parse arg a,b; return ((a // b) + b) // b
r: parse arg _#; return r._#
s: parse arg _#; return s._#</lang>
'''output''' &nbsp; when using the default input:
<pre>