code: def loguniform(label: str, low: float, high: float) -> Numerical:
      """Draw from a range [low, high] according to a loguniform distribution::
  
          exp(uniform(log(low), log(high))),
  
      so that the logarithm of the return value is uniformly distributed.
  
      Since logarithm is taken here, low and high must be strictly greater than 0.
  
      This is often used in variables which are log-distributed in experience,
      such as learning rate (which we often choose from 1e-1, 1e-3, 1e-6...).
  
      Examples
      --------
      >>> nni.loguniform('x', 1e-5, 1e-3)
      Numerical(1e-05, 0.001, log_distributed=True, label='x')
      >>> list(nni.loguniform('x', 1e-5, 1e-3).grid(granularity=2))
      [3.1622776601683795e-05, 0.0001, 0.00031622776601683794]
      """
      if low >= high:
          raise ValueError("low must be strictly smaller than high.")
      if low <= 0 or high <= 0:
          raise ValueError(
              "low and high must be strictly greater than 0."
          )
      return Numerical(low, high, log_distributed=True, label=label)
  
file_path: nni/nni/mutable/shortcut.py
imports: from __future__ import annotations
  import logging
  from typing import TYPE_CHECKING, TypeVar, overload, List, cast
  from .mutable import Categorical, Numerical
label_desc: Use image node_id 6 for calling a global function with example usage: loguniform(label, low, high) and returns: Numerical