parameters: (self)
return_statement: return (x/30269.0 + y/30307.0 + z/30323.0) % 1.0
docstring: Get the next random number in the range [0.0, 1.0).
docstring_summary: Get the next random number in the range [0.0, 1.0).
docstring_tokens: Get the next random number in the range [ 0 . 0 1 . 0 ) .
function: def random(self):
          """Get the next random number in the range [0.0, 1.0)."""
  
          # Wichman-Hill random number generator.
          #
          # Wichmann, B. A. & Hill, I. D. (1982)
          # Algorithm AS 183:
          # An efficient and portable pseudo-random number generator
          # Applied Statistics 31 (1982) 188-190
          #
          # see also:
          #        Correction to Algorithm AS 183
          #        Applied Statistics 33 (1984) 123
          #
          #        McLeod, A. I. (1985)
          #        A remark on Algorithm AS 183
          #        Applied Statistics 34 (1985),198-200
  
          # This part is thread-unsafe:
          # BEGIN CRITICAL SECTION
          x, y, z = self._seed
          x = (171 * x) % 30269
          y = (172 * y) % 30307
          z = (170 * z) % 30323
          self._seed = x, y, z
          # END CRITICAL SECTION
  
          # Note:  on a platform using IEEE-754 double arithmetic, this can
          # never return 0.0 (asserted by Tim; proof too long for a comment).
          return (x/30269.0 + y/30307.0 + z/30323.0) % 1.0
function_tokens: def random ( self ) : # Wichman-Hill random number generator. # # Wichmann, B. A. & Hill, I. D. (1982) # Algorithm AS 183: # An efficient and portable pseudo-random number generator # Applied Statistics 31 (1982) 188-190 # # see also: #        Correction to Algorithm AS 183 #        Applied Statistics 33 (1984) 123 # #        McLeod, A. I. (1985) #        A remark on Algorithm AS 183 #        Applied Statistics 34 (1985),198-200 # This part is thread-unsafe: # BEGIN CRITICAL SECTION x , y , z = self . _seed x = ( 171 * x ) % 30269 y = ( 172 * y ) % 30307 z = ( 170 * z ) % 30323 self . _seed = x , y , z # END CRITICAL SECTION # Note:  on a platform using IEEE-754 double arithmetic, this can # never return 0.0 (asserted by Tim; proof too long for a comment). return ( x / 30269.0 + y / 30307.0 + z / 30323.0 ) % 1.0