mirror of
				https://github.com/ml-explore/mlx.git
				synced 2025-11-04 18:48:15 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			207 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			207 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE html>
 | 
						||
<html class="writer-html5" lang="en" >
 | 
						||
<head>
 | 
						||
  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
 | 
						||
 | 
						||
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 | 
						||
  <title>Random — MLX 0.0.0 documentation</title>
 | 
						||
      <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
 | 
						||
      <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
 | 
						||
  <!--[if lt IE 9]>
 | 
						||
    <script src="../_static/js/html5shiv.min.js"></script>
 | 
						||
  <![endif]-->
 | 
						||
  
 | 
						||
        <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
 | 
						||
        <script src="../_static/jquery.js"></script>
 | 
						||
        <script src="../_static/underscore.js"></script>
 | 
						||
        <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
 | 
						||
        <script src="../_static/doctools.js"></script>
 | 
						||
    <script src="../_static/js/theme.js"></script>
 | 
						||
    <link rel="index" title="Index" href="../genindex.html" />
 | 
						||
    <link rel="search" title="Search" href="../search.html" />
 | 
						||
    <link rel="next" title="mlx.core.random.seed" href="_autosummary/mlx.core.random.seed.html" />
 | 
						||
    <link rel="prev" title="mlx.core.zeros_like" href="_autosummary/mlx.core.zeros_like.html" /> 
 | 
						||
</head>
 | 
						||
 | 
						||
<body class="wy-body-for-nav"> 
 | 
						||
  <div class="wy-grid-for-nav">
 | 
						||
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
 | 
						||
      <div class="wy-side-scroll">
 | 
						||
        <div class="wy-side-nav-search" >
 | 
						||
 | 
						||
          
 | 
						||
          
 | 
						||
          <a href="../index.html" class="icon icon-home">
 | 
						||
            MLX
 | 
						||
          </a>
 | 
						||
              <div class="version">
 | 
						||
                0.0.0
 | 
						||
              </div>
 | 
						||
<div role="search">
 | 
						||
  <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
 | 
						||
    <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
 | 
						||
    <input type="hidden" name="check_keywords" value="yes" />
 | 
						||
    <input type="hidden" name="area" value="default" />
 | 
						||
  </form>
 | 
						||
</div>
 | 
						||
        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
 | 
						||
              <p class="caption" role="heading"><span class="caption-text">Install</span></p>
 | 
						||
<ul>
 | 
						||
<li class="toctree-l1"><a class="reference internal" href="../install.html">Build and Install</a></li>
 | 
						||
</ul>
 | 
						||
<p class="caption" role="heading"><span class="caption-text">Usage</span></p>
 | 
						||
<ul>
 | 
						||
<li class="toctree-l1"><a class="reference internal" href="../quick_start.html">Quick Start Guide</a></li>
 | 
						||
<li class="toctree-l1"><a class="reference internal" href="../using_streams.html">Using Streams</a></li>
 | 
						||
</ul>
 | 
						||
<p class="caption" role="heading"><span class="caption-text">Examples</span></p>
 | 
						||
<ul>
 | 
						||
<li class="toctree-l1"><a class="reference internal" href="../examples/linear_regression.html">Linear Regression</a></li>
 | 
						||
<li class="toctree-l1"><a class="reference internal" href="../examples/mlp.html">Multi-Layer Perceptron</a></li>
 | 
						||
<li class="toctree-l1"><a class="reference internal" href="../examples/llama-inference.html">LLM inference</a></li>
 | 
						||
</ul>
 | 
						||
<p class="caption" role="heading"><span class="caption-text">Further Reading</span></p>
 | 
						||
<ul>
 | 
						||
<li class="toctree-l1"><a class="reference internal" href="../dev/extensions.html">Developer Documentation</a></li>
 | 
						||
</ul>
 | 
						||
<p class="caption" role="heading"><span class="caption-text">Python API Reference</span></p>
 | 
						||
<ul class="current">
 | 
						||
<li class="toctree-l1"><a class="reference internal" href="array.html">Array</a></li>
 | 
						||
<li class="toctree-l1"><a class="reference internal" href="devices_and_streams.html">Devices and Streams</a></li>
 | 
						||
<li class="toctree-l1"><a class="reference internal" href="ops.html">Operations</a></li>
 | 
						||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Random</a><ul>
 | 
						||
<li class="toctree-l2"><a class="reference internal" href="_autosummary/mlx.core.random.seed.html">mlx.core.random.seed</a></li>
 | 
						||
<li class="toctree-l2"><a class="reference internal" href="_autosummary/mlx.core.random.key.html">mlx.core.random.key</a></li>
 | 
						||
<li class="toctree-l2"><a class="reference internal" href="_autosummary/mlx.core.random.split.html">mlx.core.random.split</a></li>
 | 
						||
<li class="toctree-l2"><a class="reference internal" href="_autosummary/mlx.core.random.bernoulli.html">mlx.core.random.bernoulli</a></li>
 | 
						||
<li class="toctree-l2"><a class="reference internal" href="_autosummary/mlx.core.random.categorical.html">mlx.core.random.categorical</a></li>
 | 
						||
<li class="toctree-l2"><a class="reference internal" href="_autosummary/mlx.core.random.gumbel.html">mlx.core.random.gumbel</a></li>
 | 
						||
<li class="toctree-l2"><a class="reference internal" href="_autosummary/mlx.core.random.normal.html">mlx.core.random.normal</a></li>
 | 
						||
<li class="toctree-l2"><a class="reference internal" href="_autosummary/mlx.core.random.randint.html">mlx.core.random.randint</a></li>
 | 
						||
<li class="toctree-l2"><a class="reference internal" href="_autosummary/mlx.core.random.uniform.html">mlx.core.random.uniform</a></li>
 | 
						||
<li class="toctree-l2"><a class="reference internal" href="_autosummary/mlx.core.random.truncated_normal.html">mlx.core.random.truncated_normal</a></li>
 | 
						||
</ul>
 | 
						||
</li>
 | 
						||
<li class="toctree-l1"><a class="reference internal" href="transforms.html">Transforms</a></li>
 | 
						||
<li class="toctree-l1"><a class="reference internal" href="fft.html">FFT</a></li>
 | 
						||
<li class="toctree-l1"><a class="reference internal" href="nn.html">Neural Networks</a></li>
 | 
						||
<li class="toctree-l1"><a class="reference internal" href="optimizers.html">Optimizers</a></li>
 | 
						||
<li class="toctree-l1"><a class="reference internal" href="tree_utils.html">Tree Utils</a></li>
 | 
						||
</ul>
 | 
						||
<p class="caption" role="heading"><span class="caption-text">C++ API Reference</span></p>
 | 
						||
<ul>
 | 
						||
<li class="toctree-l1"><a class="reference internal" href="../cpp/ops.html">Operations</a></li>
 | 
						||
</ul>
 | 
						||
 | 
						||
        </div>
 | 
						||
      </div>
 | 
						||
    </nav>
 | 
						||
 | 
						||
    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
 | 
						||
          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
 | 
						||
          <a href="../index.html">MLX</a>
 | 
						||
      </nav>
 | 
						||
 | 
						||
      <div class="wy-nav-content">
 | 
						||
        <div class="rst-content">
 | 
						||
          <div role="navigation" aria-label="Page navigation">
 | 
						||
  <ul class="wy-breadcrumbs">
 | 
						||
      <li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
 | 
						||
      <li class="breadcrumb-item active">Random</li>
 | 
						||
      <li class="wy-breadcrumbs-aside">
 | 
						||
            <a href="../_sources/python/random.rst.txt" rel="nofollow"> View page source</a>
 | 
						||
      </li>
 | 
						||
  </ul>
 | 
						||
  <hr/>
 | 
						||
</div>
 | 
						||
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
 | 
						||
           <div itemprop="articleBody">
 | 
						||
             
 | 
						||
  <section id="random">
 | 
						||
<span id="id1"></span><h1>Random<a class="headerlink" href="#random" title="Permalink to this heading"></a></h1>
 | 
						||
<p>Random sampling functions in MLX use an implicit global PRNG state by default.
 | 
						||
However, all function take an optional <code class="docutils literal notranslate"><span class="pre">key</span></code> keyword argument for when more
 | 
						||
fine-grained control or explicit state management is needed.</p>
 | 
						||
<p>For example, you can generate random numbers with:</p>
 | 
						||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">3</span><span class="p">):</span>
 | 
						||
  <span class="nb">print</span><span class="p">(</span><span class="n">mx</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">uniform</span><span class="p">())</span>
 | 
						||
</pre></div>
 | 
						||
</div>
 | 
						||
<p>which will print a sequence of unique pseudo random numbers. Alternatively you
 | 
						||
can explicitly set the key:</p>
 | 
						||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">key</span> <span class="o">=</span> <span class="n">mx</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">key</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
 | 
						||
<span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">3</span><span class="p">):</span>
 | 
						||
  <span class="nb">print</span><span class="p">(</span><span class="n">mx</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">uniform</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="n">key</span><span class="p">))</span>
 | 
						||
</pre></div>
 | 
						||
</div>
 | 
						||
<p>which will yield the same pseudo random number at each iteration.</p>
 | 
						||
<p>Following <a class="reference external" href="https://jax.readthedocs.io/en/latest/jep/263-prng.html">JAX’s PRNG design</a>
 | 
						||
we use a splittable version of Threefry, which is a counter-based PRNG.</p>
 | 
						||
<table class="autosummary longtable docutils align-default">
 | 
						||
<tbody>
 | 
						||
<tr class="row-odd"><td><p><a class="reference internal" href="_autosummary/mlx.core.random.seed.html#mlx.core.random.seed" title="mlx.core.random.seed"><code class="xref py py-obj docutils literal notranslate"><span class="pre">seed</span></code></a>(seed)</p></td>
 | 
						||
<td><p>Seed the global PRNG.</p></td>
 | 
						||
</tr>
 | 
						||
<tr class="row-even"><td><p><a class="reference internal" href="_autosummary/mlx.core.random.key.html#mlx.core.random.key" title="mlx.core.random.key"><code class="xref py py-obj docutils literal notranslate"><span class="pre">key</span></code></a>(seed)</p></td>
 | 
						||
<td><p>Get a PRNG key from a seed.</p></td>
 | 
						||
</tr>
 | 
						||
<tr class="row-odd"><td><p><a class="reference internal" href="_autosummary/mlx.core.random.split.html#mlx.core.random.split" title="mlx.core.random.split"><code class="xref py py-obj docutils literal notranslate"><span class="pre">split</span></code></a>(key[, num, stream])</p></td>
 | 
						||
<td><p>Split a PRNG key into sub keys.</p></td>
 | 
						||
</tr>
 | 
						||
<tr class="row-even"><td><p><a class="reference internal" href="_autosummary/mlx.core.random.bernoulli.html#mlx.core.random.bernoulli" title="mlx.core.random.bernoulli"><code class="xref py py-obj docutils literal notranslate"><span class="pre">bernoulli</span></code></a>([p, shape, key, stream])</p></td>
 | 
						||
<td><p>Generate Bernoulli random values.</p></td>
 | 
						||
</tr>
 | 
						||
<tr class="row-odd"><td><p><a class="reference internal" href="_autosummary/mlx.core.random.categorical.html#mlx.core.random.categorical" title="mlx.core.random.categorical"><code class="xref py py-obj docutils literal notranslate"><span class="pre">categorical</span></code></a>(logits[, axis, shape, ...])</p></td>
 | 
						||
<td><p>Sample from a categorical distribution.</p></td>
 | 
						||
</tr>
 | 
						||
<tr class="row-even"><td><p><a class="reference internal" href="_autosummary/mlx.core.random.gumbel.html#mlx.core.random.gumbel" title="mlx.core.random.gumbel"><code class="xref py py-obj docutils literal notranslate"><span class="pre">gumbel</span></code></a>([shape, dtype, stream, key])</p></td>
 | 
						||
<td><p>Sample from the standard Gumbel distribution.</p></td>
 | 
						||
</tr>
 | 
						||
<tr class="row-odd"><td><p><a class="reference internal" href="_autosummary/mlx.core.random.normal.html#mlx.core.random.normal" title="mlx.core.random.normal"><code class="xref py py-obj docutils literal notranslate"><span class="pre">normal</span></code></a>([shape, dtype, key, stream])</p></td>
 | 
						||
<td><p>Generate normally distributed random numbers.</p></td>
 | 
						||
</tr>
 | 
						||
<tr class="row-even"><td><p><a class="reference internal" href="_autosummary/mlx.core.random.randint.html#mlx.core.random.randint" title="mlx.core.random.randint"><code class="xref py py-obj docutils literal notranslate"><span class="pre">randint</span></code></a>(low, high[, shape, dtype, key, stream])</p></td>
 | 
						||
<td><p>Generate random integers from the given interval.</p></td>
 | 
						||
</tr>
 | 
						||
<tr class="row-odd"><td><p><a class="reference internal" href="_autosummary/mlx.core.random.uniform.html#mlx.core.random.uniform" title="mlx.core.random.uniform"><code class="xref py py-obj docutils literal notranslate"><span class="pre">uniform</span></code></a>([low, high, shape, dtype, key, stream])</p></td>
 | 
						||
<td><p>Generate uniformly distributed random numbers.</p></td>
 | 
						||
</tr>
 | 
						||
<tr class="row-even"><td><p><a class="reference internal" href="_autosummary/mlx.core.random.truncated_normal.html#mlx.core.random.truncated_normal" title="mlx.core.random.truncated_normal"><code class="xref py py-obj docutils literal notranslate"><span class="pre">truncated_normal</span></code></a>(lower, upper[, shape, ...])</p></td>
 | 
						||
<td><p>Generate values from a truncated normal distribution.</p></td>
 | 
						||
</tr>
 | 
						||
</tbody>
 | 
						||
</table>
 | 
						||
</section>
 | 
						||
 | 
						||
 | 
						||
           </div>
 | 
						||
          </div>
 | 
						||
          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
 | 
						||
        <a href="_autosummary/mlx.core.zeros_like.html" class="btn btn-neutral float-left" title="mlx.core.zeros_like" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
 | 
						||
        <a href="_autosummary/mlx.core.random.seed.html" class="btn btn-neutral float-right" title="mlx.core.random.seed" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
 | 
						||
    </div>
 | 
						||
 | 
						||
  <hr/>
 | 
						||
 | 
						||
  <div role="contentinfo">
 | 
						||
    <p>© Copyright 2023, MLX Contributors.</p>
 | 
						||
  </div>
 | 
						||
 | 
						||
  Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
 | 
						||
    <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
 | 
						||
    provided by <a href="https://readthedocs.org">Read the Docs</a>.
 | 
						||
   
 | 
						||
 | 
						||
</footer>
 | 
						||
        </div>
 | 
						||
      </div>
 | 
						||
    </section>
 | 
						||
  </div>
 | 
						||
  <script>
 | 
						||
      jQuery(function () {
 | 
						||
          SphinxRtdTheme.Navigation.enable(true);
 | 
						||
      });
 | 
						||
  </script> 
 | 
						||
 | 
						||
</body>
 | 
						||
</html> |