@@ -12,19 +12,16 @@ package rand
1212 */
1313
1414const (
15- _LEN = 607
16- _TAP = 273
17- _MAX = 1 << 63
18- _MASK = _MAX - 1
19- _A = 48271
20- _M = (1 << 31 ) - 1
21- _Q = 44488
22- _R = 3399
15+ rngLen = 607
16+ rngTap = 273
17+ rngMax = 1 << 63
18+ rngMask = rngMax - 1
19+ int32max = (1 << 31 ) - 1
2320)
2421
2522var (
26- // Used for seeding. See gen_cooked.go for details.
27- rng_cooked [ _LEN ]int64 = [... ]int64 {
23+ // rngCooked used for seeding. See gen_cooked.go for details.
24+ rngCooked [ rngLen ]int64 = [... ]int64 {
2825 - 4181792142133755926 , - 4576982950128230565 , 1395769623340756751 , 5333664234075297259 ,
2926 - 6347679516498800754 , 9033628115061424579 , 7143218595135194537 , 4812947590706362721 ,
3027 7937252194349799378 , 5307299880338848416 , 8209348851763925077 , - 7107630437535961764 ,
@@ -181,37 +178,43 @@ var (
181178)
182179
183180type rngSource struct {
184- tap int // index into vec
185- feed int // index into vec
186- vec [_LEN ]int64 // current feedback register
181+ tap int // index into vec
182+ feed int // index into vec
183+ vec [rngLen ]int64 // current feedback register
187184}
188185
189186// seed rng x[n+1] = 48271 * x[n] mod (2**31 - 1)
190187func seedrand (x int32 ) int32 {
191- hi := x / _Q
192- lo := x % _Q
193- x = _A * lo - _R * hi
188+ const (
189+ A = 48271
190+ Q = 44488
191+ R = 3399
192+ )
193+
194+ hi := x / Q
195+ lo := x % Q
196+ x = A * lo - R * hi
194197 if x < 0 {
195- x += _M
198+ x += int32max
196199 }
197200 return x
198201}
199202
200203// Seed uses the provided seed value to initialize the generator to a deterministic state.
201204func (rng * rngSource ) Seed (seed int64 ) {
202205 rng .tap = 0
203- rng .feed = _LEN - _TAP
206+ rng .feed = rngLen - rngTap
204207
205- seed = seed % _M
208+ seed = seed % int32max
206209 if seed < 0 {
207- seed += _M
210+ seed += int32max
208211 }
209212 if seed == 0 {
210213 seed = 89482311
211214 }
212215
213216 x := int32 (seed )
214- for i := - 20 ; i < _LEN ; i ++ {
217+ for i := - 20 ; i < rngLen ; i ++ {
215218 x = seedrand (x )
216219 if i >= 0 {
217220 var u int64
@@ -220,27 +223,27 @@ func (rng *rngSource) Seed(seed int64) {
220223 u ^= int64 (x ) << 20
221224 x = seedrand (x )
222225 u ^= int64 (x )
223- u ^= rng_cooked [i ]
226+ u ^= rngCooked [i ]
224227 rng .vec [i ] = u
225228 }
226229 }
227230}
228231
229232// Int63 returns a non-negative pseudo-random 63-bit integer as an int64.
230233func (rng * rngSource ) Int63 () int64 {
231- return int64 (rng .Uint64 () & _MASK )
234+ return int64 (rng .Uint64 () & rngMask )
232235}
233236
234237// Uint64 returns a non-negative pseudo-random 64-bit integer as an uint64.
235238func (rng * rngSource ) Uint64 () uint64 {
236239 rng .tap --
237240 if rng .tap < 0 {
238- rng .tap += _LEN
241+ rng .tap += rngLen
239242 }
240243
241244 rng .feed --
242245 if rng .feed < 0 {
243- rng .feed += _LEN
246+ rng .feed += rngLen
244247 }
245248
246249 x := rng .vec [rng .feed ] + rng .vec [rng .tap ]
0 commit comments