def noncentral_f(self, dfnum, dfden, nonc, size=None, dtype=float): """Returns an array of samples drawn from the noncentral F distribution. .. warning:: This function may synchronize the device. .. seealso:: :func:`cupy.random.noncentral_f` for full documentation, :meth:`numpy.random.RandomState.noncentral_f <numpy.random.mtrand.RandomState.noncentral_f>` """ dfnum, dfden, nonc = \ cupy.asarray(dfnum), cupy.asarray(dfden), cupy.asarray(nonc) if cupy.any(dfnum <= 0): # synchronize! raise ValueError('dfnum <= 0') if cupy.any(dfden <= 0): # synchronize! raise ValueError('dfden <= 0') if cupy.any(nonc < 0): # synchronize! raise ValueError('nonc < 0') if size is None: size = cupy.broadcast(dfnum, dfden, nonc).shape y = cupy.empty(shape=size, dtype=dtype) _kernels.noncentral_f_kernel(dfnum, dfden, nonc, self._rk_seed, y) self._update_seed(y.size) return y
def noncentral_f(self, dfnum, dfden, nonc, size=None, dtype=float): """Returns an array of samples drawn from the noncentral F distribution. .. seealso:: :func:`cupy.random.noncentral_f` for full documentation, :meth:`numpy.random.RandomState.noncentral_f` """ dfnum, dfden, nonc = \ cupy.asarray(dfnum), cupy.asarray(dfden), cupy.asarray(nonc) if cupy.any(dfnum <= 0): raise ValueError("dfnum <= 0") if cupy.any(dfden <= 0): raise ValueError("dfden <= 0") if cupy.any(nonc < 0): raise ValueError("nonc < 0") if size is None: size = cupy.broadcast(dfnum, dfden, nonc).shape y = cupy.empty(shape=size, dtype=dtype) _kernels.noncentral_f_kernel(dfnum, dfden, nonc, self.rk_seed, y) self.rk_seed += numpy.prod(size) return y