Files
dl/document/html/dl__random_8h_source.html
2026-09-16 14:07:40 +08:00

366 lines
58 KiB
HTML
Vendored
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>dl: D:/dl/dl/math/dl_random.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">dl
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.13.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','搜索',false);
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){ initResizable(false); });
/* @license-end */
</script>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_17297ffb27ce571941f5fb5008f01a1f.html">dl</a></li><li class="navelem"><a class="el" href="dir_d483d22d183a78db490f3ff6a4a958eb.html">math</a></li> </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">dl_random.h</div></div>
</div><!--header-->
<div class="contents">
<a href="dl__random_8h.html">浏览该文件的文档.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="preprocessor">#pragma once</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span> </div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#include &lt;random&gt;</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#include &quot;<a class="code" href="dl__log_8h.html">io/dl_log.h</a>&quot;</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#include &quot;<a class="code" href="dl__type__def_8h.html">base/dl_type_def.h</a>&quot;</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &quot;<a class="code" href="dl__algorithm_8h.html">math/dl_algorithm.h</a>&quot;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include &quot;<a class="code" href="dl__buffer_8h.html">memory/dl_buffer.h</a>&quot;</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> </div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> </div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacedl.html">dl</a></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span>{</div>
<div class="foldopen" id="foldopen00022" data-start="{" data-end="};">
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"><a class="line" href="classdl_1_1_random.html"> 22</a></span><span class="keyword">class </span><a class="code hl_class" href="classdl_1_1_random.html">Random</a></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span>{</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">using </span>FloatType = <a class="code hl_function" href="classdl_1_1_random.html#a4647e01d6b818a3cfa77ab6e7bf9ef46">Float</a>;</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="keyword">public</span>:</div>
<div class="foldopen" id="foldopen00030" data-start="{" data-end="}">
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"><a class="line" href="classdl_1_1_random.html#a73a29f1dc17d6ec4c0f815cf23e6387e"> 30</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classdl_1_1_random.html#a73a29f1dc17d6ec4c0f815cf23e6387e">SetSeed</a>(uint32_t seed)</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> {</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <span class="keywordflow">if</span> (seed == 0)</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> {</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> std::random_device rd;</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> _re.seed(_seed = rd());</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> }</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> _re.seed(_seed = seed);</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> }</div>
</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="foldopen" id="foldopen00045" data-start="{" data-end="}">
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="classdl_1_1_random.html#a4647e01d6b818a3cfa77ab6e7bf9ef46"> 45</a></span> <span class="keyword">static</span> <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> <a class="code hl_function" href="classdl_1_1_random.html#a4647e01d6b818a3cfa77ab6e7bf9ef46">Float</a>(<a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> min, <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> max)</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> {</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="comment">//参数检查</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <span class="keywordflow">if</span> (min &gt; max)</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> {</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <a class="code hl_function" href="namespacedl.html#a5bb9ee10db5338251b4bb854939b69b3">log</a>(<span class="stringliteral">&quot;min &gt; max&quot;</span>);</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> std::swap(min, max);</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> }</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <span class="keyword">static</span> std::uniform_real_distribution&lt;T&gt; dist_double;</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="comment">//设定区间</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">using </span><a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132af623e75af30e62bbd73d6df5b50bb7b5">D</a> = std::decay_t&lt;<span class="keyword">decltype</span>(dist_double)&gt;;</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="keyword">using </span><a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a44c29edb103a2872f519ad0c9a0fdaaa">P</a> = <span class="keyword">typename</span> D::param_type;</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> dist_double.param(<a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a44c29edb103a2872f519ad0c9a0fdaaa">P</a>{min, max});</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="keywordflow">return</span> dist_double(_re);</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> }</div>
</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="foldopen" id="foldopen00066" data-start="{" data-end="}">
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"><a class="line" href="classdl_1_1_random.html#a4bbfcf06cec69e1db9c7c9b8e5c1a8b7"> 66</a></span> <span class="keyword">static</span> <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> <a class="code hl_function" href="classdl_1_1_random.html#a4bbfcf06cec69e1db9c7c9b8e5c1a8b7">Integer</a>(<a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> min, <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> max)</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> {</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="comment">//参数检查</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="keywordflow">if</span> (min &gt; max)</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> {</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <a class="code hl_function" href="namespacedl.html#a5bb9ee10db5338251b4bb854939b69b3">log</a>(<span class="stringliteral">&quot;min &gt; max&quot;</span>);</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> std::swap(min, max);</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> }</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="keyword">static</span> std::uniform_int_distribution&lt;T&gt; dist_int;</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="comment">//设定区间</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <span class="keyword">using </span><a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132af623e75af30e62bbd73d6df5b50bb7b5">D</a> = std::decay_t&lt;<span class="keyword">decltype</span>(dist_int)&gt;;</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="keyword">using </span><a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a44c29edb103a2872f519ad0c9a0fdaaa">P</a> = <span class="keyword">typename</span> D::param_type;</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> dist_int.param(<a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a44c29edb103a2872f519ad0c9a0fdaaa">P</a>{min, max});</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="keywordflow">return</span> dist_int(_re);</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> }</div>
</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="foldopen" id="foldopen00087" data-start="{" data-end="}">
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"><a class="line" href="classdl_1_1_random.html#abdaeba0688588e0d2ef7bbe6c5b885f0"> 87</a></span> <span class="keyword">static</span> <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> <a class="code hl_function" href="classdl_1_1_random.html#abdaeba0688588e0d2ef7bbe6c5b885f0">Normal</a>(<a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> u = 0, <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> o = 1)</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> {</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="keyword">static</span> std::normal_distribution&lt;T&gt; dist;</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <span class="comment">//设定区间</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="keyword">using </span><a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132af623e75af30e62bbd73d6df5b50bb7b5">D</a> = std::decay_t&lt;<span class="keyword">decltype</span>(dist)&gt;;</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="keyword">using </span><a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a44c29edb103a2872f519ad0c9a0fdaaa">P</a> = <span class="keyword">typename</span> D::param_type;</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> dist.param(<a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a44c29edb103a2872f519ad0c9a0fdaaa">P</a>{ u, o });</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="keywordflow">return</span> dist(_re);</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> }</div>
</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> </div>
<div class="foldopen" id="foldopen00097" data-start="{" data-end="}">
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"><a class="line" href="classdl_1_1_random.html#ad8af2e797f8fb648a945b561efee121f"> 97</a></span> <span class="keyword">static</span> FloatType <a class="code hl_function" href="classdl_1_1_random.html#ad8af2e797f8fb648a945b561efee121f">FloatNormal</a>(FloatType u = 0_f, FloatType o = 1_f)</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> {</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="keywordflow">return</span> <a class="code hl_function" href="classdl_1_1_random.html#abdaeba0688588e0d2ef7bbe6c5b885f0">Normal</a>(u, o);</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> }</div>
</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span></div>
<div class="foldopen" id="foldopen00104" data-start="{" data-end="}">
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"><a class="line" href="classdl_1_1_random.html#a6cba849082c8d49d2a93281d606a4963"> 104</a></span> <span class="keyword">static</span> FloatType <a class="code hl_function" href="classdl_1_1_random.html#a6cba849082c8d49d2a93281d606a4963">FloatNormalX</a>(</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> FloatType scale = 1/3_f,</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> FloatType min = -1, FloatType max = 1)</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> {</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span><span class="preprocessor">#if DL_PLATFORM == DL_PLATFORM_LINUX</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="keywordflow">return</span> <a class="code hl_function" href="namespacedl.html#ad3ef53c3ec822b30f2b55f8546fcd141">dl::clamp</a>(<a class="code hl_function" href="classdl_1_1_random.html#ad8af2e797f8fb648a945b561efee121f">FloatNormal</a>() * scale, min, max);</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="keywordflow">return</span> std::clamp(<a class="code hl_function" href="classdl_1_1_random.html#ad8af2e797f8fb648a945b561efee121f">FloatNormal</a>() * scale, min, max);</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> }</div>
</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> </div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> </div>
<div class="foldopen" id="foldopen00116" data-start="{" data-end="}">
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"><a class="line" href="classdl_1_1_random.html#a99880e3c681cbb1fa994bf26fec21168"> 116</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classdl_1_1_random.html#a99880e3c681cbb1fa994bf26fec21168">Bool</a>()</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> {</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="keywordflow">return</span> <a class="code hl_function" href="classdl_1_1_random.html#a4bbfcf06cec69e1db9c7c9b8e5c1a8b7">Integer</a>(0, 1) == 1;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> }</div>
</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span></div>
<div class="foldopen" id="foldopen00124" data-start="{" data-end="}">
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"><a class="line" href="classdl_1_1_random.html#a5161bc47a6f2b0c88674a8148068bb05"> 124</a></span> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code hl_function" href="classdl_1_1_random.html#a5161bc47a6f2b0c88674a8148068bb05">Int</a>(<span class="keywordtype">int</span> min, <span class="keywordtype">int</span> max)</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> {</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> <span class="keywordflow">return</span> <a class="code hl_function" href="classdl_1_1_random.html#a4bbfcf06cec69e1db9c7c9b8e5c1a8b7">Integer</a>(min, max);</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> }</div>
</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span></div>
<div class="foldopen" id="foldopen00131" data-start="{" data-end="}">
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"><a class="line" href="classdl_1_1_random.html#abdac9a5604a92ae1037ae47cabdc3fe0"> 131</a></span> <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <a class="code hl_function" href="classdl_1_1_random.html#abdac9a5604a92ae1037ae47cabdc3fe0">Uint</a>(<span class="keywordtype">unsigned</span> min, <span class="keywordtype">unsigned</span> max)</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> {</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> <span class="keywordflow">return</span> <a class="code hl_function" href="classdl_1_1_random.html#a4bbfcf06cec69e1db9c7c9b8e5c1a8b7">Integer</a>(min, max);</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> }</div>
</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span></div>
<div class="foldopen" id="foldopen00138" data-start="{" data-end="}">
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"><a class="line" href="classdl_1_1_random.html#a385833a342d16f512e8f88f8346313be"> 138</a></span> <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code hl_function" href="classdl_1_1_random.html#a385833a342d16f512e8f88f8346313be">SizeT</a>(<span class="keywordtype">size_t</span> min, <span class="keywordtype">size_t</span> max)</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> {</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <span class="keywordflow">return</span> <a class="code hl_function" href="classdl_1_1_random.html#a4bbfcf06cec69e1db9c7c9b8e5c1a8b7">Integer</a>(min, max);</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> }</div>
</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <span class="keyword">template</span>&lt;<span class="keywordtype">size_t</span> N&gt;</div>
<div class="foldopen" id="foldopen00143" data-start="{" data-end="}">
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"><a class="line" href="classdl_1_1_random.html#acb5af1f1e9b849401dfd09391afb8877"> 143</a></span> <span class="keyword">static</span> std::array&lt;std::byte, N&gt; <a class="code hl_function" href="classdl_1_1_random.html#acb5af1f1e9b849401dfd09391afb8877">Array</a>()</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> {</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> std::array&lt;std::byte, N&gt; ret;</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <span class="keywordtype">size_t</span> <a class="code hl_enumvalue" href="namespacedl.html#a9a9c6f421dcef7f54e6c106f7c57cd27a02129bb861061d1a052c592e2dc6b383">X</a> = <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a8d9c307cb7f3c4a32822a51922d1ceaa">N</a> / 8;</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <span class="keywordtype">size_t</span> <a class="code hl_enumvalue" href="namespacedl.html#a9a9c6f421dcef7f54e6c106f7c57cd27a57cec4137b614c87cb4e24a3d003a3e0">Y</a> = <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a8d9c307cb7f3c4a32822a51922d1ceaa">N</a> % 8;</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; <a class="code hl_enumvalue" href="namespacedl.html#a9a9c6f421dcef7f54e6c106f7c57cd27a02129bb861061d1a052c592e2dc6b383">X</a>; ++i)</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> {</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> ((uint64_t*)ret.data())[i] = <a class="code hl_function" href="classdl_1_1_random.html#a4bbfcf06cec69e1db9c7c9b8e5c1a8b7">Integer&lt;uint64_t&gt;</a>(0, (std::numeric_limits&lt;uint64_t&gt;::max)());</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> }</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> uint8_t* p = (uint8_t*)ret.data() + <a class="code hl_enumvalue" href="namespacedl.html#a9a9c6f421dcef7f54e6c106f7c57cd27a02129bb861061d1a052c592e2dc6b383">X</a> * 8;</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j &lt; <a class="code hl_enumvalue" href="namespacedl.html#a9a9c6f421dcef7f54e6c106f7c57cd27a57cec4137b614c87cb4e24a3d003a3e0">Y</a>; ++j)</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> {</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> p[j] = (uint8_t)<a class="code hl_function" href="classdl_1_1_random.html#a5161bc47a6f2b0c88674a8148068bb05">Int</a>(0, 7);</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> }</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> <span class="keywordflow">return</span> ret;</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> }</div>
</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> </div>
<div class="foldopen" id="foldopen00160" data-start="{" data-end="}">
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"><a class="line" href="classdl_1_1_random.html#a75162cb6d5749f99599ecf3f55b2c9f7"> 160</a></span> <span class="keyword">static</span> <a class="code hl_class" href="classdl_1_1_buffer.html">Buffer</a> <a class="code hl_function" href="classdl_1_1_random.html#a75162cb6d5749f99599ecf3f55b2c9f7">BufferX</a>(<span class="keywordtype">size_t</span> len)</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> {</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <a class="code hl_class" href="classdl_1_1_buffer.html">Buffer</a> ret{ len };</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> <span class="keywordtype">size_t</span> <a class="code hl_enumvalue" href="namespacedl.html#a9a9c6f421dcef7f54e6c106f7c57cd27a02129bb861061d1a052c592e2dc6b383">X</a> = len / 8;</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> <span class="keywordtype">size_t</span> <a class="code hl_enumvalue" href="namespacedl.html#a9a9c6f421dcef7f54e6c106f7c57cd27a57cec4137b614c87cb4e24a3d003a3e0">Y</a> = len % 8;</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; <a class="code hl_enumvalue" href="namespacedl.html#a9a9c6f421dcef7f54e6c106f7c57cd27a02129bb861061d1a052c592e2dc6b383">X</a>; ++i)</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> {</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> ((uint64_t*)ret.data())[i] = <a class="code hl_function" href="classdl_1_1_random.html#a4bbfcf06cec69e1db9c7c9b8e5c1a8b7">Integer&lt;uint64_t&gt;</a>(0, (std::numeric_limits&lt;uint64_t&gt;::max)());</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> }</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> uint8_t* p = (uint8_t*)ret.data() + <a class="code hl_enumvalue" href="namespacedl.html#a9a9c6f421dcef7f54e6c106f7c57cd27a02129bb861061d1a052c592e2dc6b383">X</a> * 8;</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j &lt; <a class="code hl_enumvalue" href="namespacedl.html#a9a9c6f421dcef7f54e6c106f7c57cd27a57cec4137b614c87cb4e24a3d003a3e0">Y</a>; ++j)</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> {</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> p[j] = (uint8_t)<a class="code hl_function" href="classdl_1_1_random.html#a5161bc47a6f2b0c88674a8148068bb05">Int</a>(0, 7);</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> }</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> <span class="keywordflow">return</span> ret;</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> }</div>
</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span></div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> C&gt;</div>
<div class="foldopen" id="foldopen00183" data-start="{" data-end="}">
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"><a class="line" href="classdl_1_1_random.html#a2f240827718f0289e973c5e30b9ecee8"> 183</a></span> <span class="keyword">static</span> <span class="keyword">auto</span>&amp; <a class="code hl_function" href="classdl_1_1_random.html#a2f240827718f0289e973c5e30b9ecee8">Select</a>(<a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a0d61f8370cad1d412f80b84d143e1257">C</a>&amp; container)</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> {</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> assert(!container.empty());</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> <span class="keywordtype">size_t</span> index = <a class="code hl_function" href="classdl_1_1_random.html#a4bbfcf06cec69e1db9c7c9b8e5c1a8b7">Integer&lt;size_t&gt;</a>(0, container.size() - 1);</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> <span class="keyword">auto</span> iter = container.begin();</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> advance(iter, index);</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> <span class="keywordflow">return</span> *iter;</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> }</div>
</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span></div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> C&gt;</div>
<div class="foldopen" id="foldopen00198" data-start="{" data-end="}">
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"><a class="line" href="classdl_1_1_random.html#afe96f0f39b1a679b62f4f815f1325788"> 198</a></span> <span class="keyword">static</span> <span class="keyword">auto</span> <a class="code hl_function" href="classdl_1_1_random.html#afe96f0f39b1a679b62f4f815f1325788">SelectErase</a>(<a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a0d61f8370cad1d412f80b84d143e1257">C</a>&amp; container)</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> {</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> assert(!container.empty());</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> <span class="keywordtype">size_t</span> index = <a class="code hl_function" href="classdl_1_1_random.html#a4bbfcf06cec69e1db9c7c9b8e5c1a8b7">Integer&lt;size_t&gt;</a>(0, container.size() - 1);</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> <span class="keyword">auto</span> iter = container.begin();</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> advance(iter, index);</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> <span class="keyword">auto</span> ret = *iter;</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> container.erase(iter);</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> <span class="keywordflow">return</span> ret;</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> }</div>
</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> </div>
<div class="foldopen" id="foldopen00209" data-start="{" data-end="}">
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"><a class="line" href="classdl_1_1_random.html#a6960876479000d25f8c47992fafdf669"> 209</a></span> <span class="keyword">static</span> <a class="code hl_typedef" href="namespacedl.html#af6ec361004784c4eabc4ee2b9e85d603">Point</a> <a class="code hl_function" href="classdl_1_1_random.html#a6960876479000d25f8c47992fafdf669">ExPoint</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af6ec361004784c4eabc4ee2b9e85d603">Point</a>&amp; p0, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af6ec361004784c4eabc4ee2b9e85d603">Point</a>&amp; p1)</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> {</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> <span class="keywordflow">return</span> { <a class="code hl_function" href="classdl_1_1_random.html#a5161bc47a6f2b0c88674a8148068bb05">Int</a>(p0[0], p1[0]), <a class="code hl_function" href="classdl_1_1_random.html#a5161bc47a6f2b0c88674a8148068bb05">Int</a>(p0[1], p1[1]) };</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> }</div>
</div>
<div class="foldopen" id="foldopen00213" data-start="{" data-end="}">
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"><a class="line" href="classdl_1_1_random.html#a49b81aefaa63731003cf2b8bed64ed6d"> 213</a></span> <span class="keyword">static</span> <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a> <a class="code hl_function" href="classdl_1_1_random.html#a49b81aefaa63731003cf2b8bed64ed6d">ExPointU</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>&amp; p0, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>&amp; p1)</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> {</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> <span class="keywordflow">return</span> { <a class="code hl_function" href="classdl_1_1_random.html#abdac9a5604a92ae1037ae47cabdc3fe0">Uint</a>(p0[0], p1[0]), <a class="code hl_function" href="classdl_1_1_random.html#abdac9a5604a92ae1037ae47cabdc3fe0">Uint</a>(p0[1], p1[1]) };</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> }</div>
</div>
<div class="foldopen" id="foldopen00217" data-start="{" data-end="}">
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"><a class="line" href="classdl_1_1_random.html#ab9ef2f3bc08f4f02e4292783f91ae86d"> 217</a></span> <span class="keyword">static</span> <a class="code hl_typedef" href="namespacedl.html#a04611b2d3b24b5b4ad6569cdea6f62d4">Position</a> <a class="code hl_function" href="classdl_1_1_random.html#ab9ef2f3bc08f4f02e4292783f91ae86d">ExDirection</a>()</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> {</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> <span class="keywordtype">float</span> r = <a class="code hl_function" href="classdl_1_1_random.html#aedb01dd57e928701f8fed45101844514">Random::Angle</a>();</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> <span class="keywordflow">return</span> { std::cos(r), std::sin(r)};</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> }</div>
</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span></div>
<div class="foldopen" id="foldopen00225" data-start="{" data-end="}">
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"><a class="line" href="classdl_1_1_random.html#ac8d2cf951f850bb71eaed0e555aa2a26"> 225</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classdl_1_1_random.html#ac8d2cf951f850bb71eaed0e555aa2a26">Percent</a>(<span class="keywordtype">int</span> v)</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> {</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> <span class="keywordflow">return</span> <a class="code hl_function" href="classdl_1_1_random.html#a5161bc47a6f2b0c88674a8148068bb05">Int</a>(0, 99) &lt; v;</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> }</div>
</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span></div>
<div class="foldopen" id="foldopen00232" data-start="{" data-end="}">
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"><a class="line" href="classdl_1_1_random.html#aedb01dd57e928701f8fed45101844514"> 232</a></span> <span class="keyword">static</span> <span class="keywordtype">float</span> <a class="code hl_function" href="classdl_1_1_random.html#aedb01dd57e928701f8fed45101844514">Angle</a>(<span class="keywordtype">float</span> min = 0, <span class="keywordtype">float</span> max = 3.1415926f * 2.0f)</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> {</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keywordflow">return</span> <a class="code hl_typedef" href="namespacedl.html#a2deb3e79723ed0c188c47443a48744b7">Float</a>(min, max);</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> }</div>
</div>
<div class="foldopen" id="foldopen00236" data-start="{" data-end="}">
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"><a class="line" href="classdl_1_1_random.html#a958e670f0976a2e0f123a5398d659f9e"> 236</a></span> <span class="keyword">static</span> <span class="keywordtype">float</span> <a class="code hl_function" href="classdl_1_1_random.html#a958e670f0976a2e0f123a5398d659f9e">Float</a>(<span class="keyword">const</span> std::array&lt;float, 2&gt;&amp; mm)</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> {</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> <span class="keywordflow">return</span> <a class="code hl_typedef" href="namespacedl.html#a2deb3e79723ed0c188c47443a48744b7">Float</a>(mm[0], mm[1]);</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> }</div>
</div>
<div class="foldopen" id="foldopen00240" data-start="{" data-end="}">
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"><a class="line" href="classdl_1_1_random.html#a4a2533ae32f6ba11a058cabb763cb670"> 240</a></span> <span class="keyword">static</span> <span class="keywordtype">float</span> <a class="code hl_function" href="classdl_1_1_random.html#a4a2533ae32f6ba11a058cabb763cb670">Float</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">dl::Array&lt;float, 2&gt;</a>&amp; mm)</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> {</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> <span class="keywordflow">return</span> <a class="code hl_typedef" href="namespacedl.html#a2deb3e79723ed0c188c47443a48744b7">Float</a>(mm[0], mm[1]);</div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> }</div>
</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span></div>
<div class="foldopen" id="foldopen00245" data-start="{" data-end="}">
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"><a class="line" href="classdl_1_1_random.html#a7e46b749b805ed655658a81e4230fafa"> 245</a></span> <span class="keyword">static</span> std::default_random_engine&amp; <a class="code hl_function" href="classdl_1_1_random.html#a7e46b749b805ed655658a81e4230fafa">GetEngine</a>()</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> {</div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> <span class="keywordflow">return</span> _re;</div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> }</div>
</div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> <span class="keyword">static</span> uint32_t _seed;</div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> <span class="keyword">static</span> std::default_random_engine _re;</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span>};</div>
</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span>}</div>
<div class="ttc" id="aclassdl_1_1_array_html"><div class="ttname"><a href="classdl_1_1_array.html">dl::Array</a></div><div class="ttdoc">Array</div><div class="ttdef"><b>定义</b> <a href="dl__array_8h_source.html#l00028">dl_array.h:29</a></div></div>
<div class="ttc" id="aclassdl_1_1_buffer_html"><div class="ttname"><a href="classdl_1_1_buffer.html">dl::Buffer</a></div><div class="ttdef"><b>定义</b> <a href="dl__buffer_8h_source.html#l00028">dl_buffer.h:29</a></div></div>
<div class="ttc" id="aclassdl_1_1_random_html"><div class="ttname"><a href="classdl_1_1_random.html">dl::Random</a></div><div class="ttdoc">随机数</div><div class="ttdef"><b>定义</b> <a href="#l00022">dl_random.h:23</a></div></div>
<div class="ttc" id="aclassdl_1_1_random_html_a2f240827718f0289e973c5e30b9ecee8"><div class="ttname"><a href="classdl_1_1_random.html#a2f240827718f0289e973c5e30b9ecee8">dl::Random::Select</a></div><div class="ttdeci">static auto &amp; Select(C &amp;container)</div><div class="ttdoc">从容器随机选择一个</div><div class="ttdef"><b>定义</b> <a href="#l00183">dl_random.h:183</a></div></div>
<div class="ttc" id="aclassdl_1_1_random_html_a385833a342d16f512e8f88f8346313be"><div class="ttname"><a href="classdl_1_1_random.html#a385833a342d16f512e8f88f8346313be">dl::Random::SizeT</a></div><div class="ttdeci">static size_t SizeT(size_t min, size_t max)</div><div class="ttdoc">返回[min,max]区间的 size_t型整数</div><div class="ttdef"><b>定义</b> <a href="#l00138">dl_random.h:138</a></div></div>
<div class="ttc" id="aclassdl_1_1_random_html_a4647e01d6b818a3cfa77ab6e7bf9ef46"><div class="ttname"><a href="classdl_1_1_random.html#a4647e01d6b818a3cfa77ab6e7bf9ef46">dl::Random::Float</a></div><div class="ttdeci">static T Float(T min, T max)</div><div class="ttdoc">返回[min,max)区间的 浮点数随机值</div><div class="ttdef"><b>定义</b> <a href="#l00045">dl_random.h:45</a></div></div>
<div class="ttc" id="aclassdl_1_1_random_html_a49b81aefaa63731003cf2b8bed64ed6d"><div class="ttname"><a href="classdl_1_1_random.html#a49b81aefaa63731003cf2b8bed64ed6d">dl::Random::ExPointU</a></div><div class="ttdeci">static PointU ExPointU(const PointU &amp;p0, const PointU &amp;p1)</div><div class="ttdef"><b>定义</b> <a href="#l00213">dl_random.h:213</a></div></div>
<div class="ttc" id="aclassdl_1_1_random_html_a4a2533ae32f6ba11a058cabb763cb670"><div class="ttname"><a href="classdl_1_1_random.html#a4a2533ae32f6ba11a058cabb763cb670">dl::Random::Float</a></div><div class="ttdeci">static float Float(const dl::Array&lt; float, 2 &gt; &amp;mm)</div><div class="ttdef"><b>定义</b> <a href="#l00240">dl_random.h:240</a></div></div>
<div class="ttc" id="aclassdl_1_1_random_html_a4bbfcf06cec69e1db9c7c9b8e5c1a8b7"><div class="ttname"><a href="classdl_1_1_random.html#a4bbfcf06cec69e1db9c7c9b8e5c1a8b7">dl::Random::Integer</a></div><div class="ttdeci">static T Integer(T min, T max)</div><div class="ttdoc">返回[min,max]区间的 随机整数</div><div class="ttdef"><b>定义</b> <a href="#l00066">dl_random.h:66</a></div></div>
<div class="ttc" id="aclassdl_1_1_random_html_a5161bc47a6f2b0c88674a8148068bb05"><div class="ttname"><a href="classdl_1_1_random.html#a5161bc47a6f2b0c88674a8148068bb05">dl::Random::Int</a></div><div class="ttdeci">static int Int(int min, int max)</div><div class="ttdoc">返回[min,max]区间的 int型整数</div><div class="ttdef"><b>定义</b> <a href="#l00124">dl_random.h:124</a></div></div>
<div class="ttc" id="aclassdl_1_1_random_html_a6960876479000d25f8c47992fafdf669"><div class="ttname"><a href="classdl_1_1_random.html#a6960876479000d25f8c47992fafdf669">dl::Random::ExPoint</a></div><div class="ttdeci">static Point ExPoint(const Point &amp;p0, const Point &amp;p1)</div><div class="ttdef"><b>定义</b> <a href="#l00209">dl_random.h:209</a></div></div>
<div class="ttc" id="aclassdl_1_1_random_html_a6cba849082c8d49d2a93281d606a4963"><div class="ttname"><a href="classdl_1_1_random.html#a6cba849082c8d49d2a93281d606a4963">dl::Random::FloatNormalX</a></div><div class="ttdeci">static FloatType FloatNormalX(FloatType scale=1/3_f, FloatType min=-1, FloatType max=1)</div><div class="ttdoc">返回标准正态分布的缩放值,且限制到指定值</div><div class="ttdef"><b>定义</b> <a href="#l00104">dl_random.h:104</a></div></div>
<div class="ttc" id="aclassdl_1_1_random_html_a73a29f1dc17d6ec4c0f815cf23e6387e"><div class="ttname"><a href="classdl_1_1_random.html#a73a29f1dc17d6ec4c0f815cf23e6387e">dl::Random::SetSeed</a></div><div class="ttdeci">static void SetSeed(uint32_t seed)</div><div class="ttdoc">设置随机数种子</div><div class="ttdef"><b>定义</b> <a href="#l00030">dl_random.h:30</a></div></div>
<div class="ttc" id="aclassdl_1_1_random_html_a75162cb6d5749f99599ecf3f55b2c9f7"><div class="ttname"><a href="classdl_1_1_random.html#a75162cb6d5749f99599ecf3f55b2c9f7">dl::Random::BufferX</a></div><div class="ttdeci">static Buffer BufferX(size_t len)</div><div class="ttdef"><b>定义</b> <a href="#l00160">dl_random.h:160</a></div></div>
<div class="ttc" id="aclassdl_1_1_random_html_a7e46b749b805ed655658a81e4230fafa"><div class="ttname"><a href="classdl_1_1_random.html#a7e46b749b805ed655658a81e4230fafa">dl::Random::GetEngine</a></div><div class="ttdeci">static std::default_random_engine &amp; GetEngine()</div><div class="ttdoc">一般不使用,传给标准库接口才使用</div><div class="ttdef"><b>定义</b> <a href="#l00245">dl_random.h:245</a></div></div>
<div class="ttc" id="aclassdl_1_1_random_html_a958e670f0976a2e0f123a5398d659f9e"><div class="ttname"><a href="classdl_1_1_random.html#a958e670f0976a2e0f123a5398d659f9e">dl::Random::Float</a></div><div class="ttdeci">static float Float(const std::array&lt; float, 2 &gt; &amp;mm)</div><div class="ttdef"><b>定义</b> <a href="#l00236">dl_random.h:236</a></div></div>
<div class="ttc" id="aclassdl_1_1_random_html_a99880e3c681cbb1fa994bf26fec21168"><div class="ttname"><a href="classdl_1_1_random.html#a99880e3c681cbb1fa994bf26fec21168">dl::Random::Bool</a></div><div class="ttdeci">static bool Bool()</div><div class="ttdef"><b>定义</b> <a href="#l00116">dl_random.h:116</a></div></div>
<div class="ttc" id="aclassdl_1_1_random_html_ab9ef2f3bc08f4f02e4292783f91ae86d"><div class="ttname"><a href="classdl_1_1_random.html#ab9ef2f3bc08f4f02e4292783f91ae86d">dl::Random::ExDirection</a></div><div class="ttdeci">static Position ExDirection()</div><div class="ttdef"><b>定义</b> <a href="#l00217">dl_random.h:217</a></div></div>
<div class="ttc" id="aclassdl_1_1_random_html_abdac9a5604a92ae1037ae47cabdc3fe0"><div class="ttname"><a href="classdl_1_1_random.html#abdac9a5604a92ae1037ae47cabdc3fe0">dl::Random::Uint</a></div><div class="ttdeci">static unsigned Uint(unsigned min, unsigned max)</div><div class="ttdoc">返回[min,max]区间的 unsigned型整数</div><div class="ttdef"><b>定义</b> <a href="#l00131">dl_random.h:131</a></div></div>
<div class="ttc" id="aclassdl_1_1_random_html_abdaeba0688588e0d2ef7bbe6c5b885f0"><div class="ttname"><a href="classdl_1_1_random.html#abdaeba0688588e0d2ef7bbe6c5b885f0">dl::Random::Normal</a></div><div class="ttdeci">static T Normal(T u=0, T o=1)</div><div class="ttdoc">返回期望为u,标准差为o的正态分布随机值</div><div class="ttdef"><b>定义</b> <a href="#l00087">dl_random.h:87</a></div></div>
<div class="ttc" id="aclassdl_1_1_random_html_ac8d2cf951f850bb71eaed0e555aa2a26"><div class="ttname"><a href="classdl_1_1_random.html#ac8d2cf951f850bb71eaed0e555aa2a26">dl::Random::Percent</a></div><div class="ttdeci">static bool Percent(int v)</div><div class="ttdoc">返回百分比命中</div><div class="ttdef"><b>定义</b> <a href="#l00225">dl_random.h:225</a></div></div>
<div class="ttc" id="aclassdl_1_1_random_html_acb5af1f1e9b849401dfd09391afb8877"><div class="ttname"><a href="classdl_1_1_random.html#acb5af1f1e9b849401dfd09391afb8877">dl::Random::Array</a></div><div class="ttdeci">static std::array&lt; std::byte, N &gt; Array()</div><div class="ttdef"><b>定义</b> <a href="#l00143">dl_random.h:143</a></div></div>
<div class="ttc" id="aclassdl_1_1_random_html_ad8af2e797f8fb648a945b561efee121f"><div class="ttname"><a href="classdl_1_1_random.html#ad8af2e797f8fb648a945b561efee121f">dl::Random::FloatNormal</a></div><div class="ttdeci">static FloatType FloatNormal(FloatType u=0_f, FloatType o=1_f)</div><div class="ttdef"><b>定义</b> <a href="#l00097">dl_random.h:97</a></div></div>
<div class="ttc" id="aclassdl_1_1_random_html_aedb01dd57e928701f8fed45101844514"><div class="ttname"><a href="classdl_1_1_random.html#aedb01dd57e928701f8fed45101844514">dl::Random::Angle</a></div><div class="ttdeci">static float Angle(float min=0, float max=3.1415926f *2.0f)</div><div class="ttdoc">返回角度(弧度制)</div><div class="ttdef"><b>定义</b> <a href="#l00232">dl_random.h:232</a></div></div>
<div class="ttc" id="aclassdl_1_1_random_html_afe96f0f39b1a679b62f4f815f1325788"><div class="ttname"><a href="classdl_1_1_random.html#afe96f0f39b1a679b62f4f815f1325788">dl::Random::SelectErase</a></div><div class="ttdeci">static auto SelectErase(C &amp;container)</div><div class="ttdoc">从容器随机选择一个,并且从容器移除</div><div class="ttdef"><b>定义</b> <a href="#l00198">dl_random.h:198</a></div></div>
<div class="ttc" id="adl__algorithm_8h_html"><div class="ttname"><a href="dl__algorithm_8h.html">dl_algorithm.h</a></div><div class="ttdoc">算法</div></div>
<div class="ttc" id="adl__buffer_8h_html"><div class="ttname"><a href="dl__buffer_8h.html">dl_buffer.h</a></div><div class="ttdoc">表示一段内存</div></div>
<div class="ttc" id="adl__log_8h_html"><div class="ttname"><a href="dl__log_8h.html">dl_log.h</a></div><div class="ttdoc">日志系统</div></div>
<div class="ttc" id="adl__type__def_8h_html"><div class="ttname"><a href="dl__type__def_8h.html">dl_type_def.h</a></div><div class="ttdoc">通用类型定义</div></div>
<div class="ttc" id="anamespacedl_html"><div class="ttname"><a href="namespacedl.html">dl</a></div><div class="ttdef"><b>定义</b> <a href="dl__array_8h_source.html#l00021">dl_array.h:22</a></div></div>
<div class="ttc" id="anamespacedl_html_a04611b2d3b24b5b4ad6569cdea6f62d4"><div class="ttname"><a href="namespacedl.html#a04611b2d3b24b5b4ad6569cdea6f62d4">dl::Position</a></div><div class="ttdeci">Position2 Position</div><div class="ttdef"><b>定义</b> <a href="dl__type__def_8h_source.html#l00044">dl_type_def.h:44</a></div></div>
<div class="ttc" id="anamespacedl_html_a2deb3e79723ed0c188c47443a48744b7"><div class="ttname"><a href="namespacedl.html#a2deb3e79723ed0c188c47443a48744b7">dl::Float</a></div><div class="ttdeci">float Float</div><div class="ttdef"><b>定义</b> <a href="dl__type__def_8h_source.html#l00038">dl_type_def.h:38</a></div></div>
<div class="ttc" id="anamespacedl_html_a38a0162879cdbfbbe99ba16e7a170132a0d61f8370cad1d412f80b84d143e1257"><div class="ttname"><a href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a0d61f8370cad1d412f80b84d143e1257">dl::KeyCode::C</a></div><div class="ttdeci">@ C</div><div class="ttdef"><b>定义</b> <a href="dl__input_8h_source.html#l00104">dl_input.h:104</a></div></div>
<div class="ttc" id="anamespacedl_html_a38a0162879cdbfbbe99ba16e7a170132a44c29edb103a2872f519ad0c9a0fdaaa"><div class="ttname"><a href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a44c29edb103a2872f519ad0c9a0fdaaa">dl::KeyCode::P</a></div><div class="ttdeci">@ P</div><div class="ttdef"><b>定义</b> <a href="dl__input_8h_source.html#l00117">dl_input.h:117</a></div></div>
<div class="ttc" id="anamespacedl_html_a38a0162879cdbfbbe99ba16e7a170132a8d9c307cb7f3c4a32822a51922d1ceaa"><div class="ttname"><a href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a8d9c307cb7f3c4a32822a51922d1ceaa">dl::KeyCode::N</a></div><div class="ttdeci">@ N</div><div class="ttdef"><b>定义</b> <a href="dl__input_8h_source.html#l00115">dl_input.h:115</a></div></div>
<div class="ttc" id="anamespacedl_html_a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3"><div class="ttname"><a href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">dl::KeyCode::T</a></div><div class="ttdeci">@ T</div><div class="ttdef"><b>定义</b> <a href="dl__input_8h_source.html#l00121">dl_input.h:121</a></div></div>
<div class="ttc" id="anamespacedl_html_a38a0162879cdbfbbe99ba16e7a170132af623e75af30e62bbd73d6df5b50bb7b5"><div class="ttname"><a href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132af623e75af30e62bbd73d6df5b50bb7b5">dl::KeyCode::D</a></div><div class="ttdeci">@ D</div><div class="ttdef"><b>定义</b> <a href="dl__input_8h_source.html#l00105">dl_input.h:105</a></div></div>
<div class="ttc" id="anamespacedl_html_a5bb9ee10db5338251b4bb854939b69b3"><div class="ttname"><a href="namespacedl.html#a5bb9ee10db5338251b4bb854939b69b3">dl::log</a></div><div class="ttdeci">void log(std::string_view str, DL_SOURCE_LOCATION)</div><div class="ttdoc">以当前设置输出</div></div>
<div class="ttc" id="anamespacedl_html_a6347394cca146fd6b8fedf1d3545de59"><div class="ttname"><a href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">dl::PointU</a></div><div class="ttdeci">Point2U PointU</div><div class="ttdef"><b>定义</b> <a href="dl__type__def_8h_source.html#l00034">dl_type_def.h:34</a></div></div>
<div class="ttc" id="anamespacedl_html_a9a9c6f421dcef7f54e6c106f7c57cd27a02129bb861061d1a052c592e2dc6b383"><div class="ttname"><a href="namespacedl.html#a9a9c6f421dcef7f54e6c106f7c57cd27a02129bb861061d1a052c592e2dc6b383">dl::PadCode::X</a></div><div class="ttdeci">@ X</div><div class="ttdef"><b>定义</b> <a href="dl__input_8h_source.html#l00040">dl_input.h:40</a></div></div>
<div class="ttc" id="anamespacedl_html_a9a9c6f421dcef7f54e6c106f7c57cd27a57cec4137b614c87cb4e24a3d003a3e0"><div class="ttname"><a href="namespacedl.html#a9a9c6f421dcef7f54e6c106f7c57cd27a57cec4137b614c87cb4e24a3d003a3e0">dl::PadCode::Y</a></div><div class="ttdeci">@ Y</div><div class="ttdef"><b>定义</b> <a href="dl__input_8h_source.html#l00041">dl_input.h:41</a></div></div>
<div class="ttc" id="anamespacedl_html_ad3ef53c3ec822b30f2b55f8546fcd141"><div class="ttname"><a href="namespacedl.html#ad3ef53c3ec822b30f2b55f8546fcd141">dl::clamp</a></div><div class="ttdeci">constexpr T clamp(const T &amp;x, const T &amp;a, const T &amp;b)</div><div class="ttdoc">限制数值到 [a, b]</div><div class="ttdef"><b>定义</b> <a href="dl__algorithm_8h_source.html#l00032">dl_algorithm.h:32</a></div></div>
<div class="ttc" id="anamespacedl_html_af6ec361004784c4eabc4ee2b9e85d603"><div class="ttname"><a href="namespacedl.html#af6ec361004784c4eabc4ee2b9e85d603">dl::Point</a></div><div class="ttdeci">Point2 Point</div><div class="ttdef"><b>定义</b> <a href="dl__type__def_8h_source.html#l00026">dl_type_def.h:26</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
制作者&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.1
</small></address>
</div><!-- doc-content -->
</body>
</html>