GNU Octave 10.1.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
 
Loading...
Searching...
No Matches
phrtsd.f
Go to the documentation of this file.
1 SUBROUTINE phrtsd(phrase,seed1,seed2)
2C**********************************************************************
3C
4C SUBROUTINE PHRTSD( PHRASE, SEED1, SEED2 )
5C PHRase To SeeDs
6C
7C
8C Function
9C
10C
11C Uses a phrase (character string) to generate two seeds for the RGN
12C random number generator.
13C
14C
15C Arguments
16C
17C
18C PHRASE --> Phrase to be used for random number generation
19C CHARACTER*(*) PHRASE
20C
21C SEED1 <-- First seed for RGN generator
22C INTEGER SEED1
23C
24C SEED2 <-- Second seed for RGN generator
25C INTEGER SEED2
26C
27C
28C Note
29C
30C
31C Trailing blanks are eliminated before the seeds are generated.
32C
33C Generated seed values will fall in the range 1..2^30
34C (1..1,073,741,824)
35C
36C**********************************************************************
37C .. Parameters ..
38 CHARACTER*(*) table
39 parameter(table='abcdefghijklmnopqrstuvwxyz'//
40 + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'//'0123456789'//
41 + '!@#$%^&*()_+[];:''"<>?,./')
42 INTEGER*4 twop30
43 parameter(twop30=1073741824)
44 INTEGER*4 sixty4
45 parameter(sixty4=64)
46C ..
47C .. Scalar Arguments ..
48 INTEGER*4 seed1,seed2
49 CHARACTER phrase* (*)
50C ..
51C .. Local Scalars ..
52 INTEGER*4 i,ichr,j,lphr,idxval
53C ..
54C .. Local Arrays ..
55 INTEGER*4 shift(0:4),values(5)
56C ..
57C .. External Functions ..
58 INTEGER*4 lennob
59 EXTERNAL lennob
60C ..
61C .. Intrinsic Functions ..
62 INTRINSIC index,mod
63C ..
64C JJV added Save statement for variable in Data statement
65C .. Save statements ..
66 SAVE shift
67C JJV end addition
68C ..
69C .. Data statements ..
70 DATA shift/1,64,4096,262144,16777216/
71C ..
72C .. Executable Statements ..
73 seed1 = 1234567890
74 seed2 = 123456789
75 lphr = lennob(phrase)
76 IF (lphr.LT.1) RETURN
77 DO 30,i = 1,lphr
78 idxval = index(table,phrase(i:i))
79 ichr = mod(idxval,sixty4)
80 IF (ichr.EQ.0) ichr = 63
81 DO 10,j = 1,5
82 values(j) = ichr - j
83 IF (values(j).LT.1) values(j) = values(j) + 63
84 10 CONTINUE
85 DO 20,j = 1,5
86 seed1 = mod(seed1+shift(j-1)*values(j),twop30)
87 seed2 = mod(seed2+shift(j-1)*values(6-j),twop30)
88 20 CONTINUE
89 30 CONTINUE
90 RETURN
91
92 END
T mod(T x, T y)
Definition lo-mappers.h:294
subroutine phrtsd(phrase, seed1, seed2)
Definition phrtsd.f:2