code: def f(dfnum, dfden, size=None, device=None):
      r"""Draw samples from an 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 must be greater than
      zero.
  
      The random variate of the F distribution (also known as the
      Fisher distribution) is a continuous probability distribution
      that arises in ANOVA tests, and is the ratio of two chi-square
      variates.
  
      Parameters
      ----------
      dfnum : float or ndarray of floats
          Degrees of freedom in numerator, must be > 0.
      dfden : float or ndarray of float
          Degrees of freedom in denominator, 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 if ``dfnum`` and ``dfden`` are both scalars.
          Otherwise, ``np.broadcast(dfnum, dfden).size`` samples are drawn.
      device : Device, optional
          Device context of output. Default is current device.
  
      Returns
      -------
      out : ndarray or scalar
          Drawn samples from the parameterized Fisher distribution.
  
      Examples
      --------
      An example from Glantz[1], pp 47-40:
  
      Two groups, children of diabetics (25 people) and children from people
      without diabetes (25 controls). Fasting blood glucose was measured,
      case group had a mean value of 86.1, controls had a mean value of
      82.2. Standard deviations were 2.09 and 2.49 respectively. Are these
      data consistent with the null hypothesis that the parents diabetic
      status does not affect their children's blood glucose levels?
      Calculating the F statistic from the data gives a value of 36.01.
  
      Draw samples from the distribution:
  
      >>> dfnum = 1. # between group degrees of freedom
      >>> dfden = 48. # within groups degrees of freedom
      >>> s = np.random.f(dfnum, dfden, 1000)
  
      The lower bound for the top 1% of the samples is :
  
      >>> np.sort(s)[-10]
      7.61988120985 # random
  
      So there is about a 1% chance that the F statistic will exceed 7.62,
      the measured value is 36, so the null hypothesis is rejected at the 1%
      level.
      """
      return _mx_nd_np.random.f(dfnum, dfden, size=size, device=device)
  
imports: from ..ndarray import numpy
  from ..random import seed
  from ..util import wrap_ctx_to_device_func
label_desc: Use image node_id 19 for calling a global function with example usage: f(dfnum, dfden, size, device) and returns: _mx_nd_np