code: def WichmannHill1982(ix=100001, iy=200002, iz=300003):
      """Algorithm AS 183 Appl. Statist. (1982) vol.31, no.2.
  
      Returns a pseudo-random number rectangularly distributed
      between 0 and 1.   The cycle length is 6.95E+12 (See page 123
      of Applied Statistics (1984) vol.33), not as claimed in the
      original article.
  
      ix, iy and iz should be set to integer values between 1 and
      30000 before the first entry.
  
      Integer arithmetic up to 5212632 is required.
  
      Parameters
      ----------
      ix: int
          First seed value. Should not be null. (default 100001)
      iy: int
          Second seed value. Should not be null. (default 200002)
      iz: int
          Third seed value. Should not be null. (default 300003)
  
      Returns
      -------
      r_number : float
          pseudo-random number uniformly distributed between [0-1]
  
      Examples
      --------
      >>> from dipy.core import rng
      >>> N = 1000
      >>> a = [rng.WichmannHill1982() for i in range(N)]
  
      """
      if not ix or not iy or not iz:
          raise ValueError("A seed value can not be null.")
      ix = (171 * ix) % 30269
      iy = (172 * iy) % 30307
      iz = (170 * iz) % 30323
  
      """
      If integer arithmetic only up to 30323 (!) is available, the preceding
      3 statements may be replaced by:
  
      ix = 171 * (ix % 177) -  2 * (ix / 177)
      iy = 172 * (iy % 176) - 35 * (iy / 176)
      iz = 170 * (iz % 178) - 63 * (iz / 178)
  
      if ix < 0:
          ix = ix + 30269
      if iy < 0:
          iy = iy + 30307
      if iz < 0:
          iz = iz + 30323
      """
      return np.remainder(
          float(ix) / 30269.0
          + float(iy) / 30307.0
          + float(iz) / 30323.0,
          1.0,
      )
  
imports: from math import floor
  from platform import architecture
  import numpy
label_desc: Use image node_id 2 for calling a global function with example usage: WichmannHill1982(ix, iy, iz) and returns: np