Subtractive generator: Difference between revisions

Content added Content deleted
m (→‎{{header|Haskell}}: Applied hindent, added type signatures)
(add ooRexx (translated from REXX)
Line 1,195: Line 1,195:
506003769
506003769
380969305</pre>
380969305</pre>

=={{header|ooREXX}}==
{{trans|REXX}}
<lang oorexx>/*REXX program uses a subtractive generaTor,and creates a sequence of ranDom numbers. */
/* array index must be positive! */
s=.array~new
r=.array~new
s[1]=292929
s[2]=1
billion=1e9
numeric digits 20
ci=55
Do i=2 To ci-1
s[i+1]=mod(s[i-1]-s[i],billion)
End
cp=34
Do j=0 To ci-1
r[j+1]=s[mod(cp*(j+1),ci)+1]
End
m=219
cj= 24
Do k=ci To m
_=k//ci
r[_+1]=mod(r[mod(k-ci,ci)+1]-r[mod(k-cj,ci)+1],billion)
End
t=235
Do n=m+1 To t
_=n//ci
r[_+1]=mod(r[mod(n-ci,ci)+1]-r[mod(n-cj,ci)+1],billion)
Say right(r[_+1],40)
End
Exit
mod: Procedure
Parse Arg a,b
Return ((a//b)+b)//b </lang>
{{out|output|text=&nbsp; when using the default input:}}
<pre>same as with REXX</pre>


=={{header|PARI/GP}}==
=={{header|PARI/GP}}==
Line 1,574: Line 1,611:
(define rand (create-substractive-generator 292929))
(define rand (create-substractive-generator 292929))
(build-list 3 (lambda (_) (rand))) ;returns a list made from the 3 wanted numbers</lang>
(build-list 3 (lambda (_) (rand))) ;returns a list made from the 3 wanted numbers</lang>

=={{header|REXX}}==
=={{header|REXX}}==
{{trans|PL/I}}
{{trans|PL/I}}

<lang rexx>/*REXX program uses a subtractive generator, and creates a sequence of random numbers. */
<lang rexx>/*REXX program uses a subtractive generator, and creates a sequence of random numbers. */
s.0= 292929; s.1= 1; billion= 1e9 /* ◄────────┐ */
s.0= 292929; s.1= 1; billion= 1e9 /* ◄────────┐ */
Line 1,589: Line 1,628:
do k=cI to m; _= k // cI
do k=cI to m; _= k // cI
r._= mod( r( mod(k-cI, cI)) - r( mod(k-cJ, cI)), billion)
r._= mod( r( mod(k-cI, cI)) - r( mod(k-cJ, cI)), billion)
end /*m*/
end /*k*/
t= 235
t= 235
do n=m+1 to t; _= n // cI
do n=m+1 to t; _= n // cI