<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://monobook.org/w/index.php?action=history&amp;feed=atom&amp;title=C%E2%99%AF%E3%81%A7%E3%83%A1%E3%83%AB%E3%82%BB%E3%83%B3%E3%83%8C%E3%83%BB%E3%83%84%E3%82%A4%E3%82%B9%E3%82%BF%E4%B9%B1%E6%95%B0</id>
	<title>C♯でメルセンヌ・ツイスタ乱数 - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://monobook.org/w/index.php?action=history&amp;feed=atom&amp;title=C%E2%99%AF%E3%81%A7%E3%83%A1%E3%83%AB%E3%82%BB%E3%83%B3%E3%83%8C%E3%83%BB%E3%83%84%E3%82%A4%E3%82%B9%E3%82%BF%E4%B9%B1%E6%95%B0"/>
	<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=C%E2%99%AF%E3%81%A7%E3%83%A1%E3%83%AB%E3%82%BB%E3%83%B3%E3%83%8C%E3%83%BB%E3%83%84%E3%82%A4%E3%82%B9%E3%82%BF%E4%B9%B1%E6%95%B0&amp;action=history"/>
	<updated>2026-06-06T15:09:35Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://monobook.org/w/index.php?title=C%E2%99%AF%E3%81%A7%E3%83%A1%E3%83%AB%E3%82%BB%E3%83%B3%E3%83%8C%E3%83%BB%E3%83%84%E3%82%A4%E3%82%B9%E3%82%BF%E4%B9%B1%E6%95%B0&amp;diff=11667&amp;oldid=prev</id>
		<title>2019年11月26日 (火) 07:52にAdministratorによる</title>
		<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=C%E2%99%AF%E3%81%A7%E3%83%A1%E3%83%AB%E3%82%BB%E3%83%B3%E3%83%8C%E3%83%BB%E3%83%84%E3%82%A4%E3%82%B9%E3%82%BF%E4%B9%B1%E6%95%B0&amp;diff=11667&amp;oldid=prev"/>
		<updated>2019-11-26T07:52:30Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2019年11月26日 (火) 07:52時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot;&gt;5行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;5行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;既存システムの書き換えを最小にするためにそれらを切り貼りしてSystem.Randomクラスを上書き。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;既存システムの書き換えを最小にするためにそれらを切り貼りしてSystem.Randomクラスを上書き。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  new Random();&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;var random = &lt;/ins&gt;new Random();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;を&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;を&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  new MTRandom();&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;var random = &lt;/ins&gt;new MTRandom();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;にするだけ。&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;にするだけで利用できる。うれしい。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://monobook.org/w/index.php?title=C%E2%99%AF%E3%81%A7%E3%83%A1%E3%83%AB%E3%82%BB%E3%83%B3%E3%83%8C%E3%83%BB%E3%83%84%E3%82%A4%E3%82%B9%E3%82%BF%E4%B9%B1%E6%95%B0&amp;diff=11666&amp;oldid=prev</id>
		<title>2019年11月26日 (火) 07:51にAdministratorによる</title>
		<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=C%E2%99%AF%E3%81%A7%E3%83%A1%E3%83%AB%E3%82%BB%E3%83%B3%E3%83%8C%E3%83%BB%E3%83%84%E3%82%A4%E3%82%B9%E3%82%BF%E4%B9%B1%E6%95%B0&amp;diff=11666&amp;oldid=prev"/>
		<updated>2019-11-26T07:51:58Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2019年11月26日 (火) 07:51時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;1行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;1行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;C#でメルセンヌ・ツイスタ乱数を使いたい。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;C#でメルセンヌ・ツイスタ乱数を使いたい。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[ググる]]&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;といっぱい出てくるが、既存システムの書き換えを最小にするために&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[ググる]]&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;といっぱい出てくるが、みんな独自実装ばかりで、なぜかSystem.Randomを継承して上書きしているものがない。不思議。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;それらを切り貼りしてSystem&lt;/del&gt;.Randomクラスを上書き。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;既存システムの書き換えを最小にするためにそれらを切り貼りしてSystem&lt;/ins&gt;.Randomクラスを上書き。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  new Random();&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  new Random();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://monobook.org/w/index.php?title=C%E2%99%AF%E3%81%A7%E3%83%A1%E3%83%AB%E3%82%BB%E3%83%B3%E3%83%8C%E3%83%BB%E3%83%84%E3%82%A4%E3%82%B9%E3%82%BF%E4%B9%B1%E6%95%B0&amp;diff=11665&amp;oldid=prev</id>
		<title>2019年11月26日 (火) 07:49にAdministratorによる</title>
		<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=C%E2%99%AF%E3%81%A7%E3%83%A1%E3%83%AB%E3%82%BB%E3%83%B3%E3%83%8C%E3%83%BB%E3%83%84%E3%82%A4%E3%82%B9%E3%82%BF%E4%B9%B1%E6%95%B0&amp;diff=11665&amp;oldid=prev"/>
		<updated>2019-11-26T07:49:59Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2019年11月26日 (火) 07:49時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;1行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;1行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;C#でメルセンヌ・ツイスタ乱数を使いたい。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;C#でメルセンヌ・ツイスタ乱数を使いたい。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ググるといっぱい出てくるが、既存システムの書き換えを最小にするために&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[ググる]]といっぱい出てくるが、既存システムの書き換えを最小にするために&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;それらを切り貼りしてSystem.Randomクラスを上書き。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;それらを切り貼りしてSystem.Randomクラスを上書き。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://monobook.org/w/index.php?title=C%E2%99%AF%E3%81%A7%E3%83%A1%E3%83%AB%E3%82%BB%E3%83%B3%E3%83%8C%E3%83%BB%E3%83%84%E3%82%A4%E3%82%B9%E3%82%BF%E4%B9%B1%E6%95%B0&amp;diff=11664&amp;oldid=prev</id>
		<title>2019年11月26日 (火) 07:49にAdministratorによる</title>
		<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=C%E2%99%AF%E3%81%A7%E3%83%A1%E3%83%AB%E3%82%BB%E3%83%B3%E3%83%8C%E3%83%BB%E3%83%84%E3%82%A4%E3%82%B9%E3%82%BF%E4%B9%B1%E6%95%B0&amp;diff=11664&amp;oldid=prev"/>
		<updated>2019-11-26T07:49:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2019年11月26日 (火) 07:49時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;1行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;1行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;C#でメルセンヌ・ツイスタ乱数を使いたい。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;C#でメルセンヌ・ツイスタ乱数を使いたい。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;既存システムの書き換えを最小にするためにSystem&lt;/del&gt;.Randomクラスを上書き。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ググるといっぱい出てくるが、既存システムの書き換えを最小にするために&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;それらを切り貼りしてSystem&lt;/ins&gt;.Randomクラスを上書き。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  new Random();&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  new Random();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;を&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;を&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
	<entry>
		<id>https://monobook.org/w/index.php?title=C%E2%99%AF%E3%81%A7%E3%83%A1%E3%83%AB%E3%82%BB%E3%83%B3%E3%83%8C%E3%83%BB%E3%83%84%E3%82%A4%E3%82%B9%E3%82%BF%E4%B9%B1%E6%95%B0&amp;diff=11663&amp;oldid=prev</id>
		<title>Administrator: ページの作成:「C#でメルセンヌ・ツイスタ乱数を使いたい。  既存システムの書き換えを最小にするためにSystem.Randomクラスを上書き。  new Random…」</title>
		<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=C%E2%99%AF%E3%81%A7%E3%83%A1%E3%83%AB%E3%82%BB%E3%83%B3%E3%83%8C%E3%83%BB%E3%83%84%E3%82%A4%E3%82%B9%E3%82%BF%E4%B9%B1%E6%95%B0&amp;diff=11663&amp;oldid=prev"/>
		<updated>2019-11-26T07:48:24Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「C#でメルセンヌ・ツイスタ乱数を使いたい。  既存システムの書き換えを最小にするためにSystem.Randomクラスを上書き。  new Random…」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;C#でメルセンヌ・ツイスタ乱数を使いたい。&lt;br /&gt;
&lt;br /&gt;
既存システムの書き換えを最小にするためにSystem.Randomクラスを上書き。&lt;br /&gt;
 new Random();&lt;br /&gt;
を&lt;br /&gt;
 new MTRandom();&lt;br /&gt;
にするだけ。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
namespace MonoBook&lt;br /&gt;
{&lt;br /&gt;
    using System;&lt;br /&gt;
    using System.Collections.Generic;&lt;br /&gt;
&lt;br /&gt;
    /// &amp;lt;summary&amp;gt;&lt;br /&gt;
    /// Mersenne Twister 乱数生成器&lt;br /&gt;
    /// PHPのmt_rand関数と同じような物&lt;br /&gt;
    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
    public class MTRandom&lt;br /&gt;
        : Random&lt;br /&gt;
    {&lt;br /&gt;
        private const Int32 N = 624;&lt;br /&gt;
&lt;br /&gt;
        private const Int32 M = 397;&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Constant vector A.&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        private const UInt32 MATRIX_A = 0x9908b0df;&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Most significant w-RegexGreedy bits.&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        private const UInt32 UPPER_MASK = 0x80000000U;&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Least significant RegexGreedy bits.&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        private const UInt32 LOWER_MASK = 0x7fffffffU;&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// The array for the state vector.&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        private UInt32[] _mt;&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// mti==N+1 means mt[N] is not initialized.&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        private Int16 _mti;&lt;br /&gt;
&lt;br /&gt;
        public MTRandom()&lt;br /&gt;
            : this(unchecked((UInt32)(DateTime.Now.Ticks + Environment.TickCount)))&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Initializes mt[N] with a seed.&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        /// &amp;lt;param name=&amp;quot;seed&amp;quot;&amp;gt;The seed value.&amp;lt;/param&amp;gt;&lt;br /&gt;
        public MTRandom(UInt32 seed)&lt;br /&gt;
        {&lt;br /&gt;
            this._mt = new UInt32[N];&lt;br /&gt;
            this._mti = N + 1;&lt;br /&gt;
&lt;br /&gt;
            this._mt[0] = seed &amp;amp; 0xffffffffU;&lt;br /&gt;
&lt;br /&gt;
            // See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier.&lt;br /&gt;
            // In the previous versions, MSBs of the seed affect&lt;br /&gt;
            // only MSBs of the array mt[].&lt;br /&gt;
            // 2002/01/09 modified by Makoto Matsumoto&lt;br /&gt;
            for (this._mti = 1; this._mti &amp;lt; N; ++this._mti)&lt;br /&gt;
            {&lt;br /&gt;
                // The algorithm looks to overflow in below expression.&lt;br /&gt;
                unchecked&lt;br /&gt;
                {&lt;br /&gt;
                    this._mt[this._mti]&lt;br /&gt;
                        = 1812433253U * (this._mt[this._mti - 1] ^ (this._mt[this._mti - 1] &amp;gt;&amp;gt; 30)) + (UInt32)this._mti;&lt;br /&gt;
                }&lt;br /&gt;
                // for &amp;gt;32 bit machines&lt;br /&gt;
                this._mt[this._mti] &amp;amp;= 0xffffffffU;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public MTRandom(UInt32[] initKey)&lt;br /&gt;
            : this(initKey, initKey.Length)&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Initialize by an array with array-length.&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        /// &amp;lt;param name=&amp;quot;initKey&amp;quot;&amp;gt;The array for initializing keys.&amp;lt;/param&amp;gt;&lt;br /&gt;
        /// &amp;lt;param name=&amp;quot;length&amp;quot;&amp;gt;The length of initKey.&amp;lt;/param&amp;gt;&lt;br /&gt;
        public MTRandom(UInt32[] initKey, Int32 length)&lt;br /&gt;
            : this(19650218U)&lt;br /&gt;
        {&lt;br /&gt;
            Int16 i = 1;&lt;br /&gt;
            Int16 j = 0;&lt;br /&gt;
            Int16 k = (Int16)(N &amp;gt; length ? N : length);&lt;br /&gt;
&lt;br /&gt;
            for (; k != 0; k--)&lt;br /&gt;
            {&lt;br /&gt;
                // non linear&lt;br /&gt;
                this._mt[i] =&lt;br /&gt;
                    unchecked((this._mt[i] ^ ((this._mt[i - 1] ^ (this._mt[i - 1] &amp;gt;&amp;gt; 30)) * 1664525U)) + (UInt32)(initKey[j] + j));&lt;br /&gt;
                // for WORDSIZE &amp;gt; 32 machines&lt;br /&gt;
                this._mt[i] &amp;amp;= 0xffffffffU;&lt;br /&gt;
                i++;&lt;br /&gt;
                j++;&lt;br /&gt;
                if (i &amp;gt;= N)&lt;br /&gt;
                {&lt;br /&gt;
                    this._mt[0] = this._mt[N - 1];&lt;br /&gt;
                    i = 1;&lt;br /&gt;
                }&lt;br /&gt;
                if (j &amp;gt;= length)&lt;br /&gt;
                {&lt;br /&gt;
                    j = 0;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            for (k = N - 1; k != 0; k--)&lt;br /&gt;
            {&lt;br /&gt;
                this._mt[i] =&lt;br /&gt;
                    unchecked((this._mt[i] ^ ((this._mt[i - 1] ^ (this._mt[i - 1] &amp;gt;&amp;gt; 30)) * 1566083941U)) - (UInt32)i);&lt;br /&gt;
                // for WORDSIZE &amp;gt; 32 machines&lt;br /&gt;
                this._mt[i] &amp;amp;= 0xffffffffU;&lt;br /&gt;
                i++;&lt;br /&gt;
                if (i &amp;gt;= N)&lt;br /&gt;
                {&lt;br /&gt;
                    this._mt[0] = this._mt[N - 1];&lt;br /&gt;
                    i = 1;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            /* MSB is 1; assuring non-zero initial array */&lt;br /&gt;
            this._mt[0] = 0x80000000U;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /// &amp;lt;summary&amp;gt;&lt;br /&gt;
        /// Generates a random number on [0,0xffffffff]-interval&lt;br /&gt;
        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
        /// &amp;lt;returns&amp;gt;Generated value.&amp;lt;/returns&amp;gt;&lt;br /&gt;
        protected UInt32 GenerateUInt32()&lt;br /&gt;
        {&lt;br /&gt;
            UInt32 y;&lt;br /&gt;
            /* mag01[x] = x * MATRIX_A  for x=0,1 */&lt;br /&gt;
            UInt32[] mag01 = new UInt32[] { 0x0U, MATRIX_A, };&lt;br /&gt;
&lt;br /&gt;
            if (this._mti &amp;gt;= N)&lt;br /&gt;
            {&lt;br /&gt;
                /* generate N words at one time */&lt;br /&gt;
                Int32 kk = 0;&lt;br /&gt;
&lt;br /&gt;
                for (; kk &amp;lt; N - M; ++kk)&lt;br /&gt;
                {&lt;br /&gt;
                    y = (this._mt[kk] &amp;amp; UPPER_MASK) | (this._mt[kk + 1] &amp;amp; LOWER_MASK);&lt;br /&gt;
                    this._mt[kk] = this._mt[kk + M] ^ (y &amp;gt;&amp;gt; 1) ^ mag01[y &amp;amp; 0x1U];&lt;br /&gt;
                }&lt;br /&gt;
                for (; kk &amp;lt; N - 1; ++kk)&lt;br /&gt;
                {&lt;br /&gt;
                    y = (this._mt[kk] &amp;amp; UPPER_MASK) | (this._mt[kk + 1] &amp;amp; LOWER_MASK);&lt;br /&gt;
                    this._mt[kk] = this._mt[kk + (M - N)] ^ (y &amp;gt;&amp;gt; 1) ^ mag01[y &amp;amp; 0x1U];&lt;br /&gt;
                }&lt;br /&gt;
                y = (this._mt[N - 1] &amp;amp; UPPER_MASK) | (this._mt[0] &amp;amp; LOWER_MASK);&lt;br /&gt;
                this._mt[N - 1] = this._mt[M - 1] ^ (y &amp;gt;&amp;gt; 1) ^ mag01[y &amp;amp; 0x1U];&lt;br /&gt;
                this._mti = 0;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            // Tempering&lt;br /&gt;
            y = _mt[_mti++];&lt;br /&gt;
            y ^= (y &amp;gt;&amp;gt; 11);&lt;br /&gt;
            y ^= (y &amp;lt;&amp;lt; 7) &amp;amp; 0x9d2c5680U;&lt;br /&gt;
            y ^= (y &amp;lt;&amp;lt; 15) &amp;amp; 0xefc60000U;&lt;br /&gt;
            y ^= (y &amp;gt;&amp;gt; 18);&lt;br /&gt;
&lt;br /&gt;
            return y;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        protected override Double Sample()&lt;br /&gt;
        {&lt;br /&gt;
            return this.NextDouble(false, true, false);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        #region Next&lt;br /&gt;
        public override Int32 Next()&lt;br /&gt;
        {&lt;br /&gt;
            return this.NextInt32();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public override Int32 Next(Int32 maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            return this.NextInt32(maxValue);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public override Int32 Next(Int32 minValue, Int32 maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            return this.NextInt32(minValue, maxValue);&lt;br /&gt;
        }&lt;br /&gt;
        #endregion&lt;br /&gt;
&lt;br /&gt;
        #region NextByte&lt;br /&gt;
        public Byte NextByte()&lt;br /&gt;
        {&lt;br /&gt;
            return this.NextByte(Byte.MaxValue);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public Byte NextByte(Byte maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            if (maxValue &amp;lt;= 1)&lt;br /&gt;
            {&lt;br /&gt;
                if (maxValue &amp;lt; 0)&lt;br /&gt;
                {&lt;br /&gt;
                    throw new ArgumentOutOfRangeException(&amp;quot;maxValue&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
                return 0;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            return (Byte)(this.NextDouble() * maxValue);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public Byte NextByte(Byte minValue, Byte maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            if (maxValue &amp;lt; minValue)&lt;br /&gt;
            {&lt;br /&gt;
                throw new ArgumentOutOfRangeException(&amp;quot;minValue&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
            else if (minValue == maxValue)&lt;br /&gt;
            {&lt;br /&gt;
                return minValue;&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                return (Byte)(this.NextDouble(false, true, false) * ((Double)maxValue - minValue) + minValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public override void NextBytes(Byte[] buffer)&lt;br /&gt;
        {&lt;br /&gt;
            this.NextBytes(buffer, buffer.Length);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public virtual void NextBytes(Byte[] buffer, Int32 length)&lt;br /&gt;
        {&lt;br /&gt;
            if (buffer == null)&lt;br /&gt;
            {&lt;br /&gt;
                throw new ArgumentNullException(&amp;quot;buffer&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            for (Int32 idx = 0; idx &amp;lt; length; ++idx)&lt;br /&gt;
            {&lt;br /&gt;
                buffer[idx] = this.NextByte();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;Byte&amp;gt; NextBytes()&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextByte();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;Byte&amp;gt; NextBytes(Byte maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextByte(maxValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;Byte&amp;gt; NextBytes(Byte minValue, Byte maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextByte(minValue, maxValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        #endregion&lt;br /&gt;
&lt;br /&gt;
        #region NextSByte&lt;br /&gt;
        public SByte NextSByte()&lt;br /&gt;
        {&lt;br /&gt;
            return this.NextSByte(SByte.MaxValue);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public SByte NextSByte(SByte maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            if (maxValue &amp;lt;= 1)&lt;br /&gt;
            {&lt;br /&gt;
                if (maxValue &amp;lt; 0)&lt;br /&gt;
                {&lt;br /&gt;
                    throw new ArgumentOutOfRangeException(&amp;quot;maxValue&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
                return 0;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            return (SByte)(this.NextDouble() * maxValue);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public SByte NextSByte(SByte minValue, SByte maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            if (maxValue &amp;lt; minValue)&lt;br /&gt;
            {&lt;br /&gt;
                throw new ArgumentOutOfRangeException(&amp;quot;minValue&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
            else if (minValue == maxValue)&lt;br /&gt;
            {&lt;br /&gt;
                return minValue;&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                return (SByte)(this.NextDouble(false, true, false) * ((Double)maxValue - minValue) + minValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public void NextSBytes(SByte[] buffer)&lt;br /&gt;
        {&lt;br /&gt;
            this.NextSBytes(buffer, buffer.Length);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public virtual void NextSBytes(SByte[] buffer, Int32 length)&lt;br /&gt;
        {&lt;br /&gt;
            if (buffer == null)&lt;br /&gt;
            {&lt;br /&gt;
                throw new ArgumentNullException(&amp;quot;buffer&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            for (Int32 idx = 0; idx &amp;lt; length; ++idx)&lt;br /&gt;
            {&lt;br /&gt;
                buffer[idx] = this.NextSByte(SByte.MinValue, SByte.MaxValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;SByte&amp;gt; NextSBytes()&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextSByte();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;SByte&amp;gt; NextSBytes(SByte maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextSByte(maxValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;SByte&amp;gt; NextSBytes(SByte minValue, SByte maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextSByte(minValue, maxValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        #endregion&lt;br /&gt;
&lt;br /&gt;
        #region NextChar&lt;br /&gt;
        public Char NextChar()&lt;br /&gt;
        {&lt;br /&gt;
            return this.NextChar(Char.MaxValue);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public Char NextChar(Char maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            if (maxValue &amp;lt;= 1)&lt;br /&gt;
            {&lt;br /&gt;
                if (maxValue &amp;lt; 0)&lt;br /&gt;
                {&lt;br /&gt;
                    throw new ArgumentOutOfRangeException(&amp;quot;maxValue&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
                return (Char)0;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            return (Char)(this.NextDouble() * maxValue);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public Char NextChar(Char minValue, Char maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            if (maxValue &amp;lt; minValue)&lt;br /&gt;
            {&lt;br /&gt;
                throw new ArgumentOutOfRangeException(&amp;quot;minValue&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
            else if (minValue == maxValue)&lt;br /&gt;
            {&lt;br /&gt;
                return minValue;&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                return (Char)(this.NextDouble(false, true, false) * ((Double)maxValue - minValue) + minValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public void NextChars(Char[] buffer)&lt;br /&gt;
        {&lt;br /&gt;
            this.NextChars(buffer, buffer.Length);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public virtual void NextChars(Char[] buffer, Int32 length)&lt;br /&gt;
        {&lt;br /&gt;
            if (buffer == null)&lt;br /&gt;
            {&lt;br /&gt;
                throw new ArgumentNullException(&amp;quot;buffer&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            for (Int32 idx = 0; idx &amp;lt; length; ++idx)&lt;br /&gt;
            {&lt;br /&gt;
                buffer[idx] = this.NextChar();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;Char&amp;gt; NextChars()&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextChar();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;Char&amp;gt; NextChars(Char maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextChar(maxValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;Char&amp;gt; NextChars(Char minValue, Char maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextChar(minValue, maxValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        #endregion&lt;br /&gt;
&lt;br /&gt;
        #region NextInt16&lt;br /&gt;
        public Int16 NextInt16()&lt;br /&gt;
        {&lt;br /&gt;
            return this.NextInt16(Int16.MaxValue);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public Int16 NextInt16(Int16 maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            if (maxValue &amp;lt;= 1)&lt;br /&gt;
            {&lt;br /&gt;
                if (maxValue &amp;lt; 0)&lt;br /&gt;
                {&lt;br /&gt;
                    throw new ArgumentOutOfRangeException(&amp;quot;maxValue&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
                return 0;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            return (Int16)(this.NextDouble() * maxValue);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public Int16 NextInt16(Int16 minValue, Int16 maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            if (maxValue &amp;lt; minValue)&lt;br /&gt;
            {&lt;br /&gt;
                throw new ArgumentOutOfRangeException(&amp;quot;minValue&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
            else if (minValue == maxValue)&lt;br /&gt;
            {&lt;br /&gt;
                return minValue;&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                return (Int16)(this.NextDouble(false, true, false) * ((Double)maxValue - minValue) + minValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;Int16&amp;gt; NextInt16s()&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextInt16();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;Int16&amp;gt; NextInt16s(Int16 maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextInt16(maxValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;Int16&amp;gt; NextInt16s(Int16 minValue, Int16 maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextInt16(minValue, maxValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        #endregion&lt;br /&gt;
&lt;br /&gt;
        #region NextUInt16&lt;br /&gt;
        public UInt16 NextUInt16()&lt;br /&gt;
        {&lt;br /&gt;
            return this.NextUInt16(UInt16.MaxValue);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public UInt16 NextUInt16(UInt16 maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            if (maxValue &amp;lt;= 1)&lt;br /&gt;
            {&lt;br /&gt;
                if (maxValue &amp;lt; 0)&lt;br /&gt;
                {&lt;br /&gt;
                    throw new ArgumentOutOfRangeException(&amp;quot;maxValue&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
                return 0;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            return (UInt16)(this.NextDouble() * maxValue);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public UInt16 NextUInt16(UInt16 minValue, UInt16 maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            if (maxValue &amp;lt; minValue)&lt;br /&gt;
            {&lt;br /&gt;
                throw new ArgumentOutOfRangeException(&amp;quot;minValue&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
            else if (minValue == maxValue)&lt;br /&gt;
            {&lt;br /&gt;
                return minValue;&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                return (UInt16)(this.NextDouble(false, true, false) * ((Double)maxValue - minValue) + minValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;UInt16&amp;gt; NextUInt16s()&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextUInt16();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;UInt16&amp;gt; NextUInt16s(UInt16 maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextUInt16(maxValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;UInt16&amp;gt; NextUInt16s(UInt16 minValue, UInt16 maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextUInt16(minValue, maxValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        #endregion&lt;br /&gt;
&lt;br /&gt;
        #region NextInt32&lt;br /&gt;
        public Int32 NextInt32()&lt;br /&gt;
        {&lt;br /&gt;
            return this.NextInt32(Int32.MaxValue);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public Int32 NextInt32(Int32 maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            if (maxValue &amp;lt;= 1)&lt;br /&gt;
            {&lt;br /&gt;
                if (maxValue &amp;lt; 0)&lt;br /&gt;
                {&lt;br /&gt;
                    throw new ArgumentOutOfRangeException(&amp;quot;maxValue&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
                return 0;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            return (Int32)(this.NextDouble() * maxValue);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public Int32 NextInt32(Int32 minValue, Int32 maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            if (maxValue &amp;lt; minValue)&lt;br /&gt;
            {&lt;br /&gt;
                throw new ArgumentOutOfRangeException(&amp;quot;minValue&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
            else if (minValue == maxValue)&lt;br /&gt;
            {&lt;br /&gt;
                return minValue;&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                return (Int32)(this.NextDouble(false, true, false) * ((Double)maxValue - minValue) + minValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;Int32&amp;gt; NextInt32s()&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextInt32();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;Int32&amp;gt; NextInt32s(Int32 maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextInt32(maxValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;Int32&amp;gt; NextInt32s(Int32 minValue, Int32 maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextInt32(minValue, maxValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        #endregion&lt;br /&gt;
&lt;br /&gt;
        #region NextUInt32&lt;br /&gt;
        public UInt32 NextUInt32()&lt;br /&gt;
        {&lt;br /&gt;
            return this.NextUInt32(UInt32.MaxValue);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public UInt32 NextUInt32(UInt32 maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            if (maxValue &amp;lt;= 1)&lt;br /&gt;
            {&lt;br /&gt;
                if (maxValue &amp;lt; 0)&lt;br /&gt;
                {&lt;br /&gt;
                    throw new ArgumentOutOfRangeException(&amp;quot;maxValue&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
                return 0;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            return (UInt32)(this.NextDouble() * maxValue);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public UInt32 NextUInt32(UInt32 minValue, UInt32 maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            if (maxValue &amp;lt; minValue)&lt;br /&gt;
            {&lt;br /&gt;
                throw new ArgumentOutOfRangeException(&amp;quot;minValue&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
            else if (minValue == maxValue)&lt;br /&gt;
            {&lt;br /&gt;
                return minValue;&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                return (UInt32)(this.NextDouble(false, true, false) * ((Double)maxValue - minValue) + minValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;UInt32&amp;gt; NextUInt32s()&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextUInt32();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;UInt32&amp;gt; NextUInt32s(UInt32 maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextUInt32(maxValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;UInt32&amp;gt; NextUInt32s(UInt32 minValue, UInt32 maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextUInt32(minValue, maxValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        #endregion&lt;br /&gt;
&lt;br /&gt;
        #region NextInt64&lt;br /&gt;
        public Int64 NextInt64()&lt;br /&gt;
        {&lt;br /&gt;
            return this.NextInt64(Int64.MaxValue);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public Int64 NextInt64(Int64 maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            if (maxValue &amp;lt;= 1)&lt;br /&gt;
            {&lt;br /&gt;
                if (maxValue &amp;lt; 0)&lt;br /&gt;
                {&lt;br /&gt;
                    throw new ArgumentOutOfRangeException(&amp;quot;maxValue&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
                return 0;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            return (Int64)(this.NextDouble() * maxValue);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public Int64 NextInt64(Int64 minValue, Int64 maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            if (maxValue &amp;lt; minValue)&lt;br /&gt;
            {&lt;br /&gt;
                throw new ArgumentOutOfRangeException(&amp;quot;minValue&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
            else if (minValue == maxValue)&lt;br /&gt;
            {&lt;br /&gt;
                return minValue;&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                return (Int64)(this.NextDouble(false, true, false) * ((Double)maxValue - minValue) + minValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;Int64&amp;gt; NextInt64s()&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextInt64();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;Int64&amp;gt; NextInt64s(Int64 maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextInt64(maxValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;Int64&amp;gt; NextInt64s(Int64 minValue, Int64 maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextInt64(minValue, maxValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        #endregion&lt;br /&gt;
&lt;br /&gt;
        #region NextUInt64&lt;br /&gt;
        public UInt64 NextUInt64()&lt;br /&gt;
        {&lt;br /&gt;
            return this.NextUInt64(UInt64.MaxValue);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public UInt64 NextUInt64(UInt64 maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            if (maxValue &amp;lt;= 1)&lt;br /&gt;
            {&lt;br /&gt;
                if (maxValue &amp;lt; 0)&lt;br /&gt;
                {&lt;br /&gt;
                    throw new ArgumentOutOfRangeException(&amp;quot;maxValue&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
                return 0;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            return (UInt64)(this.NextDouble() * maxValue);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public UInt64 NextUInt64(UInt64 minValue, UInt64 maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            if (maxValue &amp;lt; minValue)&lt;br /&gt;
            {&lt;br /&gt;
                throw new ArgumentOutOfRangeException(&amp;quot;minValue&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
            else if (minValue == maxValue)&lt;br /&gt;
            {&lt;br /&gt;
                return minValue;&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                return (UInt64)(this.NextDouble(false, true, false) * ((Double)maxValue - minValue) + minValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;UInt64&amp;gt; NextUInt64s()&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextUInt64();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;UInt64&amp;gt; NextUInt64s(UInt64 maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextUInt64(maxValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;UInt64&amp;gt; NextUInt64s(UInt64 minValue, UInt64 maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextUInt64(minValue, maxValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        #endregion&lt;br /&gt;
&lt;br /&gt;
        #region NextDecimal&lt;br /&gt;
        public Decimal NextDecimal()&lt;br /&gt;
        {&lt;br /&gt;
            return this.NextDecimal(Decimal.MaxValue);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public Decimal NextDecimal(Decimal maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            if (maxValue &amp;lt;= 1)&lt;br /&gt;
            {&lt;br /&gt;
                if (maxValue &amp;lt; 0)&lt;br /&gt;
                {&lt;br /&gt;
                    throw new ArgumentOutOfRangeException(&amp;quot;maxValue&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
                return 0;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            return (Decimal)((Decimal)this.NextDouble() * maxValue);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public Decimal NextDecimal(Decimal minValue, Decimal maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            if (maxValue &amp;lt; minValue)&lt;br /&gt;
            {&lt;br /&gt;
                throw new ArgumentOutOfRangeException(&amp;quot;minValue&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
            else if (minValue == maxValue)&lt;br /&gt;
            {&lt;br /&gt;
                return minValue;&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                return (Decimal)((Decimal)this.NextDouble(false, true, false) * (maxValue - minValue) + minValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;Decimal&amp;gt; NextDecimals()&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextDecimal();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;Decimal&amp;gt; NextDecimals(Decimal maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextDecimal(maxValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;Decimal&amp;gt; NextDecimals(Decimal minValue, Decimal maxValue)&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextDecimal(minValue, maxValue);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        #endregion&lt;br /&gt;
&lt;br /&gt;
        #region NextSingle&lt;br /&gt;
        public Single NextSingle()&lt;br /&gt;
        {&lt;br /&gt;
            return (Single)this.Sample();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public virtual Single NextSingle(Boolean isSigned, Boolean isMinClosed, Boolean isMaxClosed)&lt;br /&gt;
        {&lt;br /&gt;
            return (Single)this.NextDouble(isSigned, isMinClosed, isMaxClosed);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;Single&amp;gt; NextSingles()&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextSingle();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;Single&amp;gt; NextSingles(Boolean isSigned, Boolean isMinClosed, Boolean isMaxClosed)&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextSingle(isSigned, isMinClosed, isMaxClosed);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        #endregion&lt;br /&gt;
&lt;br /&gt;
        #region NextDouble&lt;br /&gt;
        public override Double NextDouble()&lt;br /&gt;
        {&lt;br /&gt;
            return this.Sample();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public virtual Double NextDouble(Boolean isSigned, Boolean isMinClosed, Boolean isMaxClosed)&lt;br /&gt;
        {&lt;br /&gt;
            UInt64 n = this.GenerateUInt32();&lt;br /&gt;
            UInt64 m = isSigned ? (UInt64)Int32.MaxValue : (UInt64)UInt32.MaxValue;&lt;br /&gt;
            if (!isMinClosed)&lt;br /&gt;
            {&lt;br /&gt;
                n++;&lt;br /&gt;
            }&lt;br /&gt;
            if (!isMaxClosed)&lt;br /&gt;
            {&lt;br /&gt;
                m++;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            unchecked&lt;br /&gt;
            {&lt;br /&gt;
                if (isSigned)&lt;br /&gt;
                {&lt;br /&gt;
                    return (Double)((Int32)n) / m;&lt;br /&gt;
                }&lt;br /&gt;
                else&lt;br /&gt;
                {&lt;br /&gt;
                    return (Double)n / m;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;Double&amp;gt; NextDoubles()&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextDouble();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public IEnumerable&amp;lt;Double&amp;gt; NextDoubles(Boolean isSigned, Boolean isMinClosed, Boolean isMaxClosed)&lt;br /&gt;
        {&lt;br /&gt;
            while (true)&lt;br /&gt;
            {&lt;br /&gt;
                yield return this.NextDouble(isSigned, isMinClosed, isMaxClosed);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        #endregion&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
* [[C♯で配列やコレクションをシャッフルする‎]]&lt;/div&gt;</summary>
		<author><name>Administrator</name></author>
	</entry>
</feed>