def noncentral_f(
    dfnum: float,
    dfden: float,
    nonc: float,
    size: NdShapeLike | None = None,
    dtype: npt.DTypeLike = np.float64,
) -> ndarray:
    """
    noncentral_f(dfnum, dfden, nonc, size=None)

    Draw samples from the noncentral F distribution.

    Samples are drawn from an F distribution with specified parameters,
    `dfnum` (degrees of freedom in numerator) and `dfden` (degrees of
    freedom in denominator), where both parameters > 1.
    `nonc` is the non-centrality parameter.

    Parameters
    ----------
    dfnum : float
        Numerator degrees of freedom, must be > 0.
    dfden : float
        Denominator degrees of freedom, must be > 0.
    nonc : float
        Non-centrality parameter, the sum of the squares of the numerator
        means, must be >= 0.
    size : int or tuple of ints, optional
        Output shape.  If the given shape is, e.g., ``(m, n, k)``, then
        ``m * n * k`` samples are drawn.  If size is ``None`` (default),
        a single value is returned.

    Returns
    -------
    out : ndarray or scalar
        Drawn samples from the parameterized noncentral Fisher distribution.

    See Also
    --------
    numpy.random.noncentral_f

    Availability
    --------
    Multiple GPUs, Multiple CPUs
    """
    return get_static_generator().noncentral_f(dfnum, dfden, nonc, size, dtype)

    noncentral_f(dfnum, dfden, nonc, size=None)

    Draw samples from the noncentral F distribution.

    Samples are drawn from an F distribution with specified parameters,
    `dfnum` (degrees of freedom in numerator) and `dfden` (degrees of
    freedom in denominator), where both parameters > 1.
    `nonc` is the non-centrality parameter.

    Parameters
    ----------
    dfnum : float
        Numerator degrees of freedom, must be > 0.
    dfden : float
        Denominator degrees of freedom, must be > 0.
    nonc : float
        Non-centrality parameter, the sum of the squares of the numerator
        means, must be >= 0.
    size : int or tuple of ints, optional
        Output shape.  If the given shape is, e.g., ``(m, n, k)``, then
        ``m * n * k`` samples are drawn.  If size is ``None`` (default),
        a single value is returned.

    Returns
    -------
    out : ndarray or scalar
        Drawn samples from the parameterized noncentral Fisher distribution.

    See Also
    --------
    numpy.random.noncentral_f

    Availability
    --------
    Multiple GPUs, Multiple CPUs
    
cupynumeric/random/_random.py