Files
hustoj/web/cppreference-zh/chmhelp/cpp-numeric-random-subtract_with_carry_engine.html
2025-08-01 12:57:54 +08:00

259 lines
15 KiB
HTML

<!DOCTYPE html>
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>std::subtract_with_carry_engine</title>
<link rel="stylesheet" href="ext.css" />
<link rel="stylesheet" href="site_modules.css" />
</head>
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-cpp_numeric_random_subtract_with_carry_engine skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading"><span style="font-size:0.7em; line-height:130%">std::</span>subtract_with_carry_engine</h1>
<div id="bodyContent">
<div id="contentSub"><span class="subpages">&lt; <a href="cpp.html">cpp</a>&lrm; | <a href="cpp-numeric.html">numeric</a>&lrm; | <a href="cpp-numeric-random.html">random</a></span></div>
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
<table class="t-dcl-begin">
<tbody>
<tr class="t-dsc-header">
<td>
<div>&#23450;&#20041;&#20110;&#22836;&#25991;&#20214; <code><a href="cpp-header-random.html">&lt;random&gt;</a></code></div>
</td>
<td></td>
<td></td>
</tr>
<tr class="t-dcl t-since-cxx11">
<td>
<div><span class="mw-geshi cpp source-cpp"><span class="kw1">template</span><span class="sy1">&lt;</span><br /></span>
<p>&nbsp; &nbsp; <span class="kw1">class</span> UIntType,<br />
&nbsp; &nbsp; <a href="cpp-types-size_t.html"><span class="kw100">std::<span class="me2">size_t</span></span></a> w, <a href="cpp-types-size_t.html"><span class="kw100">std::<span class="me2">size_t</span></span></a> s, <a href="cpp-types-size_t.html"><span class="kw100">std::<span class="me2">size_t</span></span></a> r<br /></p>
<span class="sy1">&gt;</span> <span class="kw1">class</span> subtract_with_carry_engine<span class="sy4">;</span></div>
</td>
<td class="t-dcl-nopad"></td>
<td><span class="t-mark-rev t-since-cxx11">(C++11 &#36215;)</span></td>
</tr>
<tr class="t-dcl-sep">
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<p><code>subtract_with_carry_engine</code> &#26159;&#20351;&#29992;<a href="https://en.wikipedia.org/wiki/subtract_with_carry" class="extiw" title="enwiki:subtract with carry">&#24102;&#36827;&#20301;&#20943;&#27861;</a>&#31639;&#27861;&#30340;&#38543;&#26426;&#25968;&#24341;&#25806;&#12290;</p>
<p><code>subtract_with_carry_engine</code> &#30340;&#29366;&#24577;&#30001;&#24207;&#21015; <span class="mjax" style="display:none">\(\small{\{ X_i\}(0 \le i &lt;r)}\)</span><span class="mjax-fallback texhtml" style="white-space: nowrap;">{X<span class="t-su t-su-b"><br />
i</span>} (0 &le; i &lt;r)</span> &#32452;&#25104;&#65292;&#27599;&#20010; <span class="mjax" style="display:none">\(\small{X_i}\)</span><span class="mjax-fallback texhtml" style="white-space: nowrap;">X<span class="t-su t-su-b"><br />
i</span></span> &#22343;&#22312;&#21306;&#38388; <span class="mjax" style="display:none">\(\small{[0, 2^w)}\)</span><span class="mjax-fallback texhtml" style="white-space: nowrap;">[0, 2<span class="t-su">w<br /></span>)</span> &#20013;&#12290;</p>
<p>&#20196;&#25152;&#26377;&#24212;&#29992;&#21040;&#24207;&#21015;&#30340;&#19979;&#26631;&#37117;&#23545; <code>r</code> &#21462;&#20313;&#65292; <code>c</code> &#20026;&#36827;&#20301;&#20540; 0 &#25110; 1 &#12290;&#29366;&#24577;&#36801;&#31227;&#25353;&#19979;&#21015;&#26041;&#24335;&#36827;&#34892;&#65306;</p>
<ul>
<li>&#20196; <span class="mjax" style="display:none">\(\small{Y=X_{i-s}-X_{i-r}-c}\)</span><span class="mjax-fallback texhtml" style="white-space: nowrap;">Y=X<span class="t-su t-su-b"><br />
i-s</span>-X<span class="t-su t-su-b"><br />
i-r</span>-c</span><span class="texhtml" style="white-space: nowrap;"></span> &#65292;</li>
<li>&#35774;&#32622; <span class="mjax" style="display:none">\(\small{X_i}\)</span><span class="mjax-fallback texhtml" style="white-space: nowrap;">X<span class="t-su t-su-b"><br />
i</span></span> &#20026; <span class="mjax" style="display:none">\(\small{Y \mod 2^w}\)</span><span class="mjax-fallback texhtml" style="white-space: nowrap;">Y mod 2<span class="t-su">w<br /></span></span> &#65292;&#33509; <span class="mjax" style="display:none">\(\small{Y&lt;0}\)</span><span class="mjax-fallback texhtml" style="white-space: nowrap;">Y&lt;0</span> &#21017;&#35774;&#32622; <code>c</code> &#20026; 1 &#65292;&#21542;&#21017;&#35774;&#32622;&#20026; 0 &#12290;</li>
</ul>
<p>&#19979;&#21015; typedef &#23450;&#20041;&#25317;&#26377;&#20108;&#20010;&#24120;&#29992;&#21442;&#25968;&#38598;&#30340;&#38543;&#26426;&#25968;&#24341;&#25806;&#65306;</p>
<table class="t-dsc-begin">
<tr class="t-dsc-header">
<td colspan="2">
<div>&#23450;&#20041;&#20110;&#22836;&#25991;&#20214; <code><a href="cpp-header-random.html">&lt;random&gt;</a></code></div>
</td>
</tr>
<tr class="t-dsc-hitem">
<td>&#31867;&#22411;</td>
<td>&#23450;&#20041;</td>
</tr>
<tr class="t-dsc">
<td><code>ranlux24_base</code><span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">std<span class="sy4">::</span><span class="me2">subtract_with_carry_engine</span><span class="sy1">&lt;</span><a href="cpp-types-integer.html"><span class="kw126">std::<span class="me2">uint_fast32_t</span></span></a>, <span class="nu0">24</span>, <span class="nu0">10</span>, <span class="nu0">24</span><span class="sy1">&gt;</span></span></span></td>
</tr>
<tr class="t-dsc">
<td><code>ranlux48_base</code><span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">std<span class="sy4">::</span><span class="me2">subtract_with_carry_engine</span><span class="sy1">&lt;</span><a href="cpp-types-integer.html"><span class="kw127">std::<span class="me2">uint_fast64_t</span></span></a>, <span class="nu0">48</span>, <span class="nu0">5</span>, <span class="nu0">12</span><span class="sy1">&gt;</span></span></span></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E6.A8.A1.E6.9D.BF.E5.BD.A2.E5.8F.82">&#27169;&#26495;&#24418;&#21442;</span></h3>
<table class="t-par-begin">
<tr class="t-par">
<td>UIntType</td>
<td>-</td>
<td>&#29983;&#25104;&#22120;&#25152;&#29983;&#25104;&#30340;&#32467;&#26524;&#31867;&#22411;&#12290;&#33509;&#23427;&#19981;&#26159; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">unsigned</span> <span class="kw4">short</span></span></span> &#12289; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">unsigned</span> <span class="kw4">int</span></span></span> &#12289; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">unsigned</span> <span class="kw4">long</span></span></span> &#25110; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">unsigned</span> <span class="kw4">long</span> <span class="kw4">long</span></span></span> &#20043;&#19968;&#21017;&#25928;&#26524;&#26410;&#23450;&#20041;&#12290;</td>
</tr>
<tr class="t-par">
<td>w</td>
<td>-</td>
<td>&#29366;&#24577;&#24207;&#21015;&#25353;&#20301;&#35745;&#30340;&#23383;&#22823;&#23567;&#65292; 0 &lt; w &lt;= <span class="t-c"><span class="mw-geshi cpp source-cpp"><a href="cpp-types-numeric_limits.html"><span class="kw344">std::<span class="me2">numeric_limits</span></span></a><span class="sy1">&lt;</span>UIntType<span class="sy1">&gt;</span><span class="sy4">::</span><span class="me2">digits</span></span></span></td>
</tr>
<tr class="t-par">
<td>s</td>
<td>-</td>
<td><i>&#30701;&#24310;&#36831;</i></td>
</tr>
<tr class="t-par">
<td>r</td>
<td>-</td>
<td><i>&#38271;&#24310;&#36831;</i>&#65292;&#20854;&#20013; 0 &lt; s &lt; r</td>
</tr>
</table>
<h3><span class="mw-headline" id=".E6.88.90.E5.91.98.E7.B1.BB.E5.9E.8B">&#25104;&#21592;&#31867;&#22411;</span></h3>
<table class="t-dsc-begin">
<tr class="t-dsc-hitem">
<td>&#25104;&#21592;&#31867;&#22411;</td>
<td>&#23450;&#20041;</td>
</tr>
<tr class="t-dsc">
<td><code>result_type</code><span class="t-mark-rev t-since-cxx11">(C++11)</span></td>
<td>&#24341;&#25806;&#29983;&#25104;&#30340;&#25972;&#25968;&#31867;&#22411;&#12290;&#33509;&#27492;&#38750;&#26080;&#31526;&#21495;&#25972;&#25968;&#31867;&#22411;&#21017;&#32467;&#26524;&#26410;&#23450;&#20041;&#12290;</td>
</tr>
</table>
<h3><span class="mw-headline" id=".E6.88.90.E5.91.98.E5.87.BD.E6.95.B0">&#25104;&#21592;&#20989;&#25968;</span></h3>
<table class="t-dsc-begin">
<tr>
<td colspan="2">
<h5><span class="mw-headline" id=".E6.9E.84.E9.80.A0.E4.B8.8E.E6.92.AD.E7.A7.8D">&#26500;&#36896;&#19982;&#25773;&#31181;</span></h5>
</td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div t-dsc-member-nobold-div">
<div><a href="cpp-numeric-random-subtract_with_carry_engine-subtract_with_carry_engine.html"><span class="t-lines"><span>(&#26500;&#36896;&#20989;&#25968;)</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#26500;&#36896;&#24341;&#25806;<br />
<span class="t-mark">(&#20844;&#24320;&#25104;&#21592;&#20989;&#25968;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-numeric-random-subtract_with_carry_engine-seed.html"><span class="t-lines"><span>seed</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#35774;&#32622;&#24341;&#25806;&#30340;&#24403;&#21069;&#29366;&#24577;<br />
<span class="t-mark">(&#20844;&#24320;&#25104;&#21592;&#20989;&#25968;)</span></td>
</tr>
<tr>
<td colspan="2">
<h5><span class="mw-headline" id=".E7.94.9F.E6.88.90">&#29983;&#25104;</span></h5>
</td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-numeric-random-subtract_with_carry_engine-operator().html"><span class="t-lines"><span>operator()</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#25512;&#36827;&#24341;&#25806;&#29366;&#24577;&#24182;&#36820;&#22238;&#29983;&#25104;&#30340;&#20540;<br />
<span class="t-mark">(&#20844;&#24320;&#25104;&#21592;&#20989;&#25968;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-numeric-random-subtract_with_carry_engine-discard.html"><span class="t-lines"><span>discard</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#20196;&#24341;&#25806;&#29366;&#24577;&#21069;&#36827;&#25351;&#23450;&#37327;<br />
<span class="t-mark">(&#20844;&#24320;&#25104;&#21592;&#20989;&#25968;)</span></td>
</tr>
<tr>
<td colspan="2">
<h5><span class="mw-headline" id=".E7.89.B9.E5.BE.81">&#29305;&#24449;</span></h5>
</td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-numeric-random-subtract_with_carry_engine-min.html"><span class="t-lines"><span>min</span></span></a></div>
<div><span class="t-lines"><span><span class="t-cmark">[&#38745;&#24577;]</span></span></span></div>
</div>
</td>
<td>&#33719;&#21462;&#36755;&#20986;&#33539;&#22260;&#20013;&#30340;&#26368;&#23567;&#21487;&#33021;&#20540;<br />
<span class="t-mark">(&#20844;&#24320;&#38745;&#24577;&#25104;&#21592;&#20989;&#25968;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-numeric-random-subtract_with_carry_engine-max.html"><span class="t-lines"><span>max</span></span></a></div>
<div><span class="t-lines"><span><span class="t-cmark">[&#38745;&#24577;]</span></span></span></div>
</div>
</td>
<td>&#33719;&#21462;&#36755;&#20986;&#33539;&#22260;&#20013;&#30340;&#26368;&#22823;&#21487;&#33021;&#20540;<br />
<span class="t-mark">(&#20844;&#24320;&#38745;&#24577;&#25104;&#21592;&#20989;&#25968;)</span></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E9.9D.9E.E6.88.90.E5.91.98.E5.87.BD.E6.95.B0">&#38750;&#25104;&#21592;&#20989;&#25968;</span></h3>
<table class="t-dsc-begin">
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-numeric-random-subtract_with_carry_engine-operator_cmp.html"><span class="t-lines"><span>operator==</span><span>operator!=</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span><span><span class="t-mark-rev t-since-cxx11">(C++11)</span><span class="t-mark-rev t-until-cxx20">(C++20 &#20013;&#31227;&#38500;)</span></span></span></div>
</div>
</td>
<td>&#27604;&#36739;&#20004;&#20010;&#20266;&#38543;&#26426;&#25968;&#24341;&#25806;&#30340;&#20869;&#37096;&#29366;&#24577;<br />
<span class="t-mark">(&#20989;&#25968;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><a href="cpp-numeric-random-subtract_with_carry_engine-operator_ltltgtgt.html"><span class="t-lines"><span>operator&lt;&lt;</span><span>operator&gt;&gt;</span></span></a></div>
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#25191;&#34892;&#20266;&#38543;&#26426;&#25968;&#24341;&#25806;&#30340;&#27969;&#36755;&#20837;&#21644;&#36755;&#20986;<br />
<span class="t-mark">(&#20989;&#25968;)</span></td>
</tr>
</table>
<h3><span class="mw-headline" id=".E6.88.90.E5.91.98.E5.B8.B8.E9.87.8F">&#25104;&#21592;&#24120;&#37327;</span></h3>
<table class="t-dsc-begin">
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><span class="t-lines"><span><span class="t-dsc-small">constexpr size_t</span> word_size</span></span></div>
<div><span class="t-lines"><span><span class="t-cmark">[&#38745;&#24577;]</span> <span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#27169;&#26495;&#24418;&#21442; <code>w</code> &#65292;&#23383;&#22823;&#23567;<br />
<span class="t-mark">(&#20844;&#24320;&#38745;&#24577;&#25104;&#21592;&#24120;&#37327;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><span class="t-lines"><span><span class="t-dsc-small">constexpr size_t</span> short_lag</span></span></div>
<div><span class="t-lines"><span><span class="t-cmark">[&#38745;&#24577;]</span> <span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#27169;&#26495;&#24418;&#21442; <code>s</code> &#65292;&#30701;&#24310;&#36831;<br />
<span class="t-mark">(&#20844;&#24320;&#38745;&#24577;&#25104;&#21592;&#24120;&#37327;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><span class="t-lines"><span><span class="t-dsc-small">constexpr size_t</span> long_lag</span></span></div>
<div><span class="t-lines"><span><span class="t-cmark">[&#38745;&#24577;]</span> <span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#27169;&#26495;&#24418;&#21442; <code>r</code> &#65292;&#38271;&#24310;&#36831;<br />
<span class="t-mark">(&#20844;&#24320;&#38745;&#24577;&#25104;&#21592;&#24120;&#37327;)</span></td>
</tr>
<tr class="t-dsc">
<td>
<div class="t-dsc-member-div">
<div><span class="t-lines"><span><span class="t-dsc-small">constexpr UIntType</span> default_seed</span></span></div>
<div><span class="t-lines"><span><span class="t-cmark">[&#38745;&#24577;]</span> <span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
</div>
</td>
<td>&#24120;&#25968;&#20540; <span class="t-c"><span class="mw-geshi cpp source-cpp">19780503u</span></span><br />
<span class="t-mark">(&#20844;&#24320;&#38745;&#24577;&#25104;&#21592;&#24120;&#37327;)</span></td>
</tr>
</table>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>