code: def uniform_noise(space, low=0, high=1, seed=None):
      
      from odl.space import ProductSpace
  
      with NumpyRandomSeed(seed):
          if isinstance(space, ProductSpace):
              values = [uniform_noise(subspace, low, high)
                        for subspace in space]
          else:
              if space.is_complex:
                  real = np.random.uniform(low=low.real, high=high.real,
                                           size=space.shape)
                  imag = np.random.uniform(low=low.imag, high=high.imag,
                                           size=space.shape)
                  values = real + 1j * imag
              else:
                  values = np.random.uniform(low=low, high=high,
                                             size=space.shape)
  
      return space.element(values)
docs: Uniformly distributed noise in ``space``, pointwise ``U(low, high)``.
  
      Parameters
      ----------
      space : `TensorSpace` or `ProductSpace`
          The space in which the noise is created.
      low : ``space.field`` element or ``space`` `element-like`, optional
          The lower bound of the uniform noise. If a scalar, it is interpreted as
          ``low * space.one()``.
          If ``space`` is complex, the real and imaginary parts are interpreted
          as their respective part of the noise.
      high : ``space.field`` element or ``space`` `element-like`, optional
          The upper bound of the uniform noise. If a scalar, it is interpreted as
          ``high * space.one()``.
          If ``space`` is complex, the real and imaginary parts are interpreted
          as their respective part of the noise.
      seed : int, optional
          Random seed to use for generating the noise.
          For ``None``, use the current seed.
  
      Returns
      -------
      white_noise : ``space`` element
  
      See Also
      --------
      poisson_noise
      salt_pepper_noise
      white_noise
      numpy.random.normal