IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

<>
  • 特許-乱数発生装置および乱数発生方法 図1
  • 特許-乱数発生装置および乱数発生方法 図2
  • 特許-乱数発生装置および乱数発生方法 図3
  • 特許-乱数発生装置および乱数発生方法 図4
  • 特許-乱数発生装置および乱数発生方法 図5
  • 特許-乱数発生装置および乱数発生方法 図6
  • 特許-乱数発生装置および乱数発生方法 図7
  • 特許-乱数発生装置および乱数発生方法 図8
  • 特許-乱数発生装置および乱数発生方法 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-10
(45)【発行日】2023-05-18
(54)【発明の名称】乱数発生装置および乱数発生方法
(51)【国際特許分類】
   G06F 7/58 20060101AFI20230511BHJP
【FI】
G06F7/58 620
【請求項の数】 7
(21)【出願番号】P 2019175609
(22)【出願日】2019-09-26
(65)【公開番号】P2021051676
(43)【公開日】2021-04-01
【審査請求日】2022-06-09
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】片山 健太朗
【審査官】豊田 真弓
(56)【参考文献】
【文献】特開平11-085474(JP,A)
【文献】特開2005-038229(JP,A)
【文献】特開2001-142682(JP,A)
【文献】特開2018-045501(JP,A)
【文献】特開2010-002959(JP,A)
【文献】特開2013-045008(JP,A)
【文献】特開2001-067207(JP,A)
【文献】特開2007-87064(JP,A)
【文献】特開平10-197610(JP,A)
【文献】米国特許出願公開第2018/0074791(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 7/58
(57)【特許請求の範囲】
【請求項1】
複数の第1の一様乱数をそれぞれ生成する複数の第1の一様乱数生成器と、
前記複数の第1の一様乱数に基づいて複数の第1の正規乱数をそれぞれ生成する複数の第1の正規乱数生成器と、
前記複数の第1の一様乱数のうち、2以上の前記第1の一様乱数のビット値を論理演算することで複数の第2の一様乱数をそれぞれ生成する複数の第2の一様乱数生成器と、
前記複数の第2の一様乱数に基づいて第2の正規乱数を生成する第2の正規乱数生成器と、を有する乱数発生装置。
【請求項2】
前記複数の第2の一様乱数生成器の各々は、前記2以上の前記第1の一様乱数の複数のビットの各々をビット演算することで前記第2の一様乱数を生成する論理演算部を有する請求項1に記載の乱数発生装置。
【請求項3】
前記論理演算部は、前記2以上の前記第1の一様乱数の複数のビットの各々の排他的論理和をとることで前記第2の一様乱数を生成する第1の排他的論理和回路を有する、請求項2に記載の乱数発生装置。
【請求項4】
前記論理演算部は、さらに、前記第1の一様乱数のビットを循環シフトし、ビットをシフトした前記第1の一様乱数を、前記第1の排他的論理和回路に出力する第1のシフタを有する、請求項3に記載の乱数発生装置。
【請求項5】
前記論理演算部は、さらに、複数の前記第2の一様乱数の複数のビットの各々の排他的論理和をとることで第3の一様乱数を生成する第2の排他的論理和回路を有し、
前記第2の正規乱数生成器は、前記第2の一様乱数と前記第3の一様乱数とに基づいて、前記第2の正規乱数を生成する、前記請求項3または請求項4に記載の乱数発生装置。
【請求項6】
前記論理演算部は、さらに、前記第2の一様乱数のビットを循環シフトし、ビットをシフトした前記第2の一様乱数を、前記第2の排他的論理和回路に出力する第2のシフタを有する、請求項5に記載の乱数発生装置。
【請求項7】
複数の第1の一様乱数生成器と、複数の第1の正規乱数生成器と、複数の第2の一様乱数生成器と、第2の正規乱数生成器とを含む集積回路の乱数発生方法であって、
前記複数の第1の一様乱数生成器が、複数の第1の一様乱数をそれぞれ生成し、
前記複数の第1の正規乱数生成器が、前記複数の第1の一様乱数に基づいて複数の第1の正規乱数をそれぞれ生成し、
前記複数の第2の一様乱数生成器が、前記複数の第1の一様乱数のうち、2以上の前記第1の一様乱数のビット値を論理演算することで複数の第2の一様乱数をそれぞれ生成し、
前記第2の正規乱数生成器が、前記複数の第2の一様乱数に基づいて第2の正規乱数を生成する、乱数発生方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、乱数発生装置および乱数発生方法に関する。
【背景技術】
【0002】
乱数を発生する乱数発生装置において、M系列巡回符号生成器によりシード値を生成して、複数のM系列巡回符号生成器に順次供給することで、シードレジスタの数を減らしてハードウェア規模の増加を抑える手法が知られている(例えば、特許文献1参照)。また、複数の一様乱数生成器で生成した一様乱数のビットを並べ替えて複数の一様乱数を生成した後、一様乱数の同一項を総和演算することで、系列間の相関を回避した正規分布乱数を生成する手法が知られている(例えば、特許文献2参照)。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2007-87064号公報
【文献】特開2005-38229号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
近時、モンテカルロ法等による各種シミュレーションや数値解析の計算の精度を向上するため、計算に使用する正規乱数の数が増加する傾向にあり、計算に使用する乱数発生装置の数は増加する傾向にある。これにより、シミュレーション等の計算を実行する情報処理装置に搭載される乱数発生装置のハードウェアの規模は大きくなり、乱数を発生させるためのコストは上昇する。
【0005】
1つの側面では、本発明は、回路規模の増加を抑えつつ、より多くの正規乱数を生成することを目的とする。
【課題を解決するための手段】
【0006】
一つの観点によれば、乱数発生装置は、複数の第1の一様乱数をそれぞれ生成する複数の第1の一様乱数生成器と、前記複数の第1の一様乱数に基づいて複数の第1の正規乱数をそれぞれ生成する複数の第1の正規乱数生成器と、前記複数の第1の一様乱数のうち、2以上の前記第1の一様乱数のビット値を論理演算することで複数の第2の一様乱数をそれぞれ生成する複数の第2の一様乱数生成器と、前記複数の第2の一様乱数に基づいて第2の正規乱数を生成する第2の正規乱数生成器と、を有する。
【発明の効果】
【0007】
1つの側面では、本発明は、回路規模の増加を抑えつつ、より多くの正規乱数を生成することができる。
【図面の簡単な説明】
【0008】
図1】一実施形態における乱数発生装置の一例を示すブロック図である。
図2図1の乱数発生装置が搭載されるシステムの一例を示すブロック図である。
図3図1の乱数発生装置が搭載されるシステムの別の例を示すブロック図である。
図4】別の実施形態における乱数発生装置の一例を示すブロック図である。
図5】別の実施形態における乱数発生装置の一例を示すブロック図である。
図6図5の乱数発生装置において、正規乱数の生成に使用される回路の規模の一例を示すブロック図である。
図7】別の実施形態における乱数発生装置の一例を示すブロック図である。
図8】別の実施形態における乱数発生装置の一例を示すブロック図である。
図9】別の実施形態における乱数発生装置の一例を示すブロック図である。
【発明を実施するための形態】
【0009】
以下、図面を用いて実施形態が説明される。
【0010】
図1は、一実施形態における乱数発生装置の一例を示す。図1に示す乱数発生装置100は、正規乱数生成部NGEN(NGEN1、NGEN2、NGEN3)を有する。正規乱数生成部NGEN1は、複数の一様乱数生成器10および正規乱数生成器11を有する。正規乱数生成部NGEN2は、複数の一様乱数生成器20および正規乱数生成器21を有する。正規乱数生成部NGEN3は、複数の一様乱数生成器30および正規乱数生成器31を有する。
【0011】
一様乱数生成器10の各々は、一様乱数URN1を生成し、正規乱数生成器11は、一様乱数生成器10の各々が生成する一様乱数URN1に基づいて正規乱数NRN1を生成する。一様乱数生成器20の各々は、一様乱数URN2を生成し、正規乱数生成器21は、一様乱数生成器20の各々が生成する一様乱数URN2に基づいて正規乱数NRN2を生成する。
【0012】
一様乱数URN1、URN2は、第1の一様乱数の一例であり、正規乱数NRN1、NRN2は、第1の正規乱数の一例である。一様乱数URN3は、第2の一様乱数の一例であり、正規乱数NRN3は、第2の正規乱数の一例である。一様乱数生成器10、20は、第1の一様乱数生成器の一例であり、正規乱数生成器11、21は、第1の正規乱数生成器の一例である。一様乱数生成器30は、第2の一様乱数生成器の一例であり、正規乱数生成器31は、第2の正規乱数生成器の一例である。
【0013】
一様乱数生成器30の各々は、一様乱数生成器10、20が生成する複数の一様乱数URN1、URN2のうち、2つの一様乱数URN1、URN2に基づいて一様乱数URN3を生成する。なお、図1では、一様乱数生成器30は、一様乱数URN1と一様乱数URN2とを1つずつ受けるが、2つの一様乱数URN1を受けてもよく、2つの一様乱数URN2を受けてもよい。
【0014】
例えば、一様乱数生成器30は、一様乱数URN1、URN2の複数のビットの各々をビット演算する論理演算回路(論理演算部)を有する。正規乱数生成器31は、一様乱数生成器30の各々が生成する一様乱数URN3に基づいて正規乱数NRN3を生成する。
【0015】
例えば、乱数発生装置100は、12個の一様乱数生成器10と、12個の一様乱数生成器20と、12個の一様乱数生成器30とを有する。このため、各正規乱数生成部NGEN1、NGEN2、NGEN3は、中心極限定理により複数の一様乱数URN1、URN2、URN3から正規乱数NRN(NRN1、NRN2、NRN3)をそれぞれ生成することができる。
【0016】
図1に示す乱数発生装置100では、一様乱数生成器30は、一様乱数生成器10、20が生成した一様乱数URN1、URN2のうちの2つに基づいて一様乱数URN3を生成する。しかしながら、一様乱数生成器30は、3以上の一様乱数URN(URN1、URN2、またはURN1とURN2)に基づいて一様乱数URN3を生成してもよい。
【0017】
この実施形態では、正規乱数NRN3の生成に使用する一様乱数URN3を、一様乱数生成器10、20が生成する一様乱数URN1、URN2を利用して生成するため、一様乱数生成器30を一様乱数生成器10、20に比べて簡易な回路とすることができる。このため、乱数発生装置100の回路規模を、同じ数の正規乱数NRNを生成する他の正規乱数発生装置の回路規模に比べて小さくすることができる。換言すれば、乱数発生装置100の回路規模を抑えつつ、より多くの正規乱数NRNを生成することができる。例えば、乱数発生装置100に使用できる回路サイズ(論理ゲートの数など)が決まっている場合、他の正規乱数発生装置に比べて多くの正規乱数NRNを生成することができる。
【0018】
図2は、図1の乱数発生装置100が搭載されるシステムの一例を示す。図2に示すシステム210は、例えば、クラウドコンピュータとして機能するサーバシステム300を有する。サーバシステム300は、複数の計算サーバ310と、計算サーバ310の動作を管理する管理サーバ320とを有する。サーバシステム300は、インターネット等のネットワークNWを介して複数のユーザ端末500からアクセス可能である。
【0019】
これにより、例えば、ユーザは、ユーザ端末500を介してサーバシステム300に各種情報処理を実行させることができる。例えば、サーバシステム300で実行可能な情報処理として、数値解析、画像処理、金融シミュレーション、LSI(Large-Scale Integration)設計の各種シミュレーションまたはディープラーニング等の機械学習がある。また、サーバシステム300は、web検索システムやクラウドサービスに使用されてもよい。
【0020】
例えば、各計算サーバ310は、CPU(Central Processing Unit)、複数のGPU(Graphics Processing Unit)および複数のFPGA(Field-Programmable Gate Array)を有する。各計算サーバ310に搭載されるCPUの数は、2以上でもよい。例えば、GPUおよびFPGAは、CPUからの指示に基づいてアクセラレータとして動作する。なお、各計算サーバ310は、FPGAのみを有してもよく、FPGAとDSP(Digital Signal Processor)とを有してもよい。
【0021】
図1に示した乱数発生装置100は、1つまたは複数のFPGAに乱数発生装置100の回路情報を転送することで、FPGA内に複数個設けられる。そして、乱数発生装置100が生成する正規乱数NRN1、NRN2、NRN3は、例えば、数値解析、画像処理または各種シミュレーションに使用される。
【0022】
この実施形態では、正規乱数を発生する乱数発生装置100の回路規模を他の乱数発生装置の回路規模に比べて削減できる。このため、例えば、FPGAに割り当てられる乱数発生装置100用の領域に、より多くの乱数発生装置100を搭載することができる。したがって、数値計算等の精度を上げるために、計算で使用する正規乱数の数が増える場合にも、生成する正規乱数の数が不足する不具合の発生を抑制することができる。なお、乱数発生装置100は、計算サーバ310に搭載されるASIC(Application Specific Integrated Circuit)等に搭載されてもよい。
【0023】
例えば、金融シミュレーションでは、銘柄数を増やすことで、使用する正規乱数の数が指数関数的に増加する。LSI設計のシミュレーションでは、パラメータ数を増やすことで、使用する正規乱数の数が指数関数的に増加する。また、FPGAを搭載したクラウドサービスにおいて、例えば、多数のユーザ(ユーザ端末500)により、モンテカルロシミュレーションが並列に実行される場合にも、大量の正規乱数が使用される。
【0024】
図3は、図1の乱数発生装置100が搭載されるシステムの別の例を示す。図3に示すシステム220は、例えば、複数の計算サーバ410と管理サーバ420とを有するサーバシステム400である。計算サーバ410は、システムバスを介して相互に接続され、管理バスを介して管理サーバ420に接続される。
【0025】
計算サーバ410は、図1に示す計算サーバ310と同様に、CPUと、アクセラレータとして機能する複数のGPUおよび複数のFPGAとを有する。計算サーバ410は、DSPを有してもよい。そして、図1に示した乱数発生装置100は、少なくとも1つのFPGAに乱数発生装置100の回路情報を転送することで、FPGA内に複数個設けられる。乱数発生装置100が生成する正規乱数NRNは、図2に示すサーバシステム300と同様に、数値解析、画像処理、金融シミュレーション、LSI設計の各種シミュレーションまたはディープラーニング等の機械学習に使用される。
【0026】
以上、図1から図3に示す実施形態では、一様乱数生成器30を一様乱数生成器10、20に比べて簡易な回路とすることができるため、乱数発生装置100の回路規模を他の正規乱数発生装置の回路規模に比べて小さくすることができる。換言すれば、乱数発生装置100の回路規模を抑えつつ、より多くの正規乱数NRNを生成することができる。正規乱数生成部NGEN3は、12個の一様乱数生成器30を有するため、中心極限定理により複数の一様乱数URN1、URN2から正規乱数NRN3を生成することができる。
【0027】
図4は、別の実施形態における乱数発生装置の一例を示す。図1と同じ要素については、詳細な説明は省略する。例えば、図4に示す乱数発生装置102は、図2に示す計算サーバ310のFPGA内または図示しないASIC内に設けられ、あるいは、図3に示す計算サーバ410のFPGA内または図示しないASIC内に設けられる。
【0028】
乱数発生装置102は、3つの正規乱数生成部NGEN(NGEN1、NGEN2、NGEN3)を有する。例えば、正規乱数生成部NGEN1は、12個の一様乱数生成器10(#1-#12)と加算器12とを有する。例えば、正規乱数生成部NGEN2は、12個の一様乱数生成器20(#1-#12)と加算器22とを有する。加算器12、22は、第1の正規乱数生成器の一例である。
【0029】
なお、図4は、説明を分かりやすくするために、乱数発生装置102が3つの正規乱数生成部NGEN1-NGEN3を有する例を示す。しかし実際には、乱数発生装置102は、FPGAに割り当てられた回路領域に応じて、3つの正規乱数生成部NGEN1-NGEN3を複数組有する。これにより、乱数発生装置102は、大量の正規乱数NRN(NRN1、NRN2、NRN3)を生成することができる。
【0030】
正規乱数生成部NGEN1において、一様乱数生成器10(#1-#12)は、図示しないシード値に基づいて互いに異なる12個の一様乱数URN1(#1-#12)を生成する。シード値は、一様乱数生成器10(#1-#12)毎に相違するため、12個の一様乱数URN1(#1-#12)は互いに相関がない。
【0031】
加算器12は、複数の一様乱数URN1を加算することで、正規乱数NRN1を生成する。例えば、加算器12は、互いに相関がない12個の一様乱数URN1(#1-#12)を加算することで、中心極限定理によって正規乱数NRN1を生成することができる。
【0032】
正規乱数生成部NGEN2において、一様乱数生成器20(#1-#12)は、図示しないシード値に基づいて互いに異なる12個の一様乱数URN2(#1-#12)を生成する。シード値は、一様乱数生成器20(#1-#12)毎に相違するため、12個の一様乱数URN2(#1-#12)は互いに相関がない。
【0033】
加算器22は、複数の一様乱数URN2を加算することで、正規乱数NRN2を生成する。例えば、加算器22は、互いに相関がない12個の一様乱数URN2(#1-#12)を加算することで、中心極限定理によって正規乱数NRN2を生成することができる。
【0034】
正規乱数生成部NGEN3は、12個の排他的論理和回路XOR1(#1-#12)と加算器32とを有する。排他的論理和回路XOR1は、論理演算部の一例であり、第1の排他的論理和回路の一例である。加算器32は、第2の正規乱数生成器の一例である。以下では、排他的論理和回路XOR1は、単に、XOR1とも称する。
【0035】
XOR1(#1-#12)の各々は、2つの一様乱数生成器10が生成する2つの一様乱数URN1、または、2つの一様乱数生成器20が生成する2つの一様乱数URN2の論理演算を実行し、一様乱数URN3を生成する。例えば、各XOR1は、2つの一様乱数URN1(またはURN2)の複数ビットの各々について排他的論理和のビット演算をすることで一様乱数URN3を生成する。すなわち、各XOR1は、2つの一様乱数URN1(またはURN2)において、ビット番号が互いに同じビット値の排他的論理和をとり、一様乱数URN3のビット値を生成する。
【0036】
例えば、図4では、XOR1(#1)は、一様乱数URN1(#1、#2)に基づいて一様乱数URN3(#1)を生成し、XOR1(#2)は、一様乱数URN1(#3、#4)に基づいて一様乱数URN3(#2)を生成する。XOR1(#6)は、一様乱数URN1(#11、#12)に基づいて一様乱数URN3(#6)を生成する。変数nを1から6のいずれかとする場合、XOR1(#n)は、一様乱数URN1(#2n-1)、URN1(#2n)に基づいて一様乱数URN3(#n)が生成される。
【0037】
XOR1(#7)は、一様乱数URN2(#1、#2)に基づいて一様乱数URN3(#7)を生成し、XOR1(#8)は、一様乱数URN2(#3、#4)に基づいて一様乱数URN3(#8)を生成する。XOR1(#12)は、一様乱数URN2(#11、#12)に基づいて一様乱数URN3(#12)を生成する。変数nを7から12のいずれかとする場合、XOR1(#n)は、一様乱数URN2(#2(n-6)-1)、URN2(#2(n-6))に基づいて一様乱数URN3(#n)が生成される。
【0038】
各XOR1(#1-#12)に供給される2つの一様乱数(URN1またはURN2)は、異なるシード値に基づいて生成されるため、互いに相関がない。各XOR1(#1-#12)は、入力する2つの一様乱数に相関がない場合、これら2つの一様乱数と相関がない一様乱数URN3を生成することは、本発明者により確認されている。
【0039】
加算器32は、複数の一様乱数URN3を加算することで、正規乱数NRN3を生成する。例えば、加算器32は、互いに相関がない12個の一様乱数URN3(#1-#12)を加算することで、中心極限定理によって正規乱数NRN3を生成することができる。
【0040】
例えば、一様乱数生成器10、20は、疑似乱数列生成法の1つであるXorshift128を利用して設けられる。Xorshift128による一様乱数生成器10、20は、一例として直列に接続された4つの排他的論理和回路(XOR)を有する。XORを4つのNANDゲートで構成する場合、Xorshift128による各一様乱数生成器10、20は、16個のNANDゲートを有する。したがって、正規乱数生成部NGEN1の論理規模は、加算器12の論理を除くと、192個のNANDゲートの論理規模に相当する。同様に、正規乱数生成部NGEN2の論理規模は、加算器22の論理を除くと、192個のNANDゲートの論理規模に相当する。
【0041】
一方、正規乱数生成部NGEN3は、加算器32の論理を除くと、12個のXOR1を有しており、48個のNANDゲートの論理規模に相当する。このため、乱数発生装置102の一様乱数生成器10、20とXOR1の論理規模は、NANDゲート換算で432個(192+192+48)である。
【0042】
これに対して、正規乱数生成部NGEN3を、正規乱数生成部NGEN1と同様に、12個の一様乱数生成器10で構成する場合、正規乱数生成部NGEN3の論理規模は、加算器32を除くと、192個のNANDゲートの論理規模に相当する。この場合、互いに同じ論理構成の3つの正規乱数生成部NGEN1、NGEN2、NGEN3を含む正規乱数発生装置の論理規模は、NANDゲート換算で576個(192+192+192)になる。したがって、加算器12、22、32を除く乱数発生装置102の論理規模は、互いに同じ3つの正規乱数生成器を含む正規乱数発生装置の論理規模に比べて25%削減することができる((576-432)/576))。
【0043】
以上、図4に示す実施形態においても、図1に示す実施形態と同様に、一様乱数生成器10、20が生成する一様乱数URN1、URN2を利用して、論理演算部の一種であるXOR1により一様乱数URN3を生成する。このため、加算器32に供給する12個の一様乱数URN3を生成する一様乱数生成器(XOR1)の回路規模を、12個の一様乱数生成器10(または、20)の回路規模に比べて小さくすることができる。この結果、乱数発生装置102の回路規模を抑えつつ、より多くの正規乱数NRN1、NRN2、NRN3を生成することができる。
【0044】
さらに、この実施形態では、一様乱数生成器10、20により生成される一様乱数URN1、URN2を使用してXOR1により一様乱数URN3を生成し、一様乱数URN1、URN2、URN3を加算することで正規乱数NRN3を生成する。これにより、中心極限定理によって、高品質の正規分布にしたがう正規乱数NRN3を生成することができる。
【0045】
図5は、別の実施形態における乱数発生装置の一例を示す。図4と同様の要素については、同じ符号を付し、詳細な説明は省略する。例えば、図5に示す乱数発生装置104は、図2に示す計算サーバ310のFPGA内または図示しないASIC内に設けられ、あるいは、図3に示す計算サーバ410のFPGA内または図示しないASIC内に設けられる。乱数発生装置104は、3つの正規乱数生成部NGEN1、NGEN2、NGEN3を有する。正規乱数生成部NGEN1、NGEN2は、図4に示した正規乱数生成部NGEN1、NGEN2と同じ構成であるため、図示を省略する。
【0046】
例えば、正規乱数生成部NGEN3は、8個のXOR1、4個のXOR2および加算器32を有する。XOR1は、第1の排他的論理和回路の一例であり、XOR2は、第2の排他的論理和回路の一例である。例えば、各XOR1は、2つの一様乱数生成器10(図4)が生成する2つの一様乱数URN1、または、2つの一様乱数生成器20(図4)が生成する2つの一様乱数URN2に基づいて、一様乱数URN3を生成する。
【0047】
各XOR2は、2つのXOR1が生成する2つの一様乱数URN3に基づいて、一様乱数URN4を生成する。例えば、各XOR2は、2つの一様乱数URN3の複数ビットの各々について排他的論理和のビット演算をすることで一様乱数URN4を生成する。すなわち、各XOR2は、2つの一様乱数URN3において、ビット番号が互いに同じビット値の排他的論理和をとり、一様乱数URN4のビット値を生成する。
【0048】
加算器32は、複数の一様乱数URN3、URN4を加算することで、正規乱数NRN3を生成する。例えば、加算器22は、互いに相関がない12個の一様乱数URN3、URN4を加算することで、中心極限定理によって正規乱数NRN3を生成することができる。なお、例えば、各一様乱数生成器10、20(図4)に様々なシード値を与え、XOR2が生成する一様乱数URN4と、XOR1が生成するURN3および他のURN4との相関がないことが予め確認される。
【0049】
図6は、図5の乱数発生装置104において、正規乱数NRN3の生成に使用される回路の規模の一例を示す。図6は、2つの正規乱数NRN1と、2つの正規乱数NRN2と、3つの正規乱数NRN3とを生成する回路構成を示す。この場合、乱数発生装置104に含まれる24個の一様乱数生成器10と、24個の一様乱数生成器20と、36個のXOR1、XOR2とは、NANDゲート換算で912個である。
【0050】
これに対して、36個のXOR1、XOR2の代わりに36個の一様乱数生成器10を設ける場合の乱数発生装置の回路規模は、NANDゲート換算で1344個である。したがって、加算器12、22、32を除く乱数発生装置104の論理規模は、互いに同じ7個の正規乱数生成器を含む正規乱数発生装置の論理規模に比べて32%削減することができる((1344-912)/1344))。
【0051】
以上、図5および図6に示す実施形態では、乱数発生装置104の回路規模を、図1および図4に示す実施形態よりもさらに抑えつつ、より多くの正規乱数NRNを生成することができる。また、正規乱数NRN3の生成に使用する一様乱数URN3、URN4をXOR1、XOR2を使用して生成することで、中心極限定理によって、高品質の正規分布にしたがう正規乱数NRN3を生成することができる。
【0052】
図7は、別の実施形態における乱数発生装置の一例を示す。図4と同様の要素については、同じ符号を付し、詳細な説明は省略する。例えば、図7に示す乱数発生装置106は、図2に示す計算サーバ310のFPGA内または図示しないASIC内に設けられ、あるいは、図3に示す計算サーバ410のFPGA内または図示しないASIC内に設けられる。乱数発生装置106は、3つの正規乱数生成部NGEN1、NGEN2、NGEN3を有する。正規乱数生成部NGEN1、NGEN2は、図4に示した正規乱数生成部NGEN1、NGEN2の構成と同じである。
【0053】
正規乱数生成部NGEN3は、図4に示した正規乱数生成部NGEN3の各XOR1の入力に巡回型のシフタCSFT1が接続される。シフタCSFT1は、第1のシフタの一例である。乱数発生装置106は、シフタCSFT1が追加されることを除き、図4に示した乱数発生装置102と同様の構成である。
【0054】
各シフタCSFT1は、一様乱数生成器10(または20)から出力される一様乱数URN1(またはURN2)のビットを巡回的にシフトし、シフトした一様乱数URN1(またはURN2)をXOR1に出力する。1つの加算器32に対応する24個のシフタCSFTにおいてシフトするビット数は、互いに同じでもよく、相違してもよい。
【0055】
この実施形態では、一様乱数URN1(またはURN2)は、巡回型のシフタCSFTを介してXOR1に入力される。これにより、例えば、一様乱数生成器10(または20)が同じシード値に基づいて一様乱数URN1(またはURN2)を生成する場合にも、相関を廃した12個の一様乱数URN3を生成することができる。なお、シフタCSFTでのビットのシフト数は、複数のXOR1でそれぞれ生成される一様乱数URN3の相関が発生しないように、予め決められる。これにより、中心極限定理によって、高品質の正規分布にしたがう正規乱数NRN3を生成することができる。
【0056】
なお、シフタCSFT1を設けることで、乱数発生装置106の回路規模は、図4に示す乱数発生装置102の回路規模よりも大きくなる。しかしながら、シフタCSFT1を設けることで、例えば、一様乱数生成器10(または20)のシード値を共通にする場合にも、正規乱数NRN3の生成に使用する一様乱数URN1、URN2の相関を低くすることができる。これにより、例えば、複数のシード値を生成する生成回路を省略することができ、乱数発生装置106の全体で見た場合、回路規模の増加を抑制しつつ、高品質の正規分布に従う正規乱数NRN3をより多く生成することができる。
【0057】
以上、図7に示す実施形態では、XOR1の入力に巡回型のシフタCSFTを接続することで、例えば、一様乱数URN1、URN2が同じシード値に基づいて生成される場合にも、相関を廃した12個の一様乱数URN3を生成することができる。この結果、回路規模の増加を抑制しつつ、高品質の正規分布に従う正規乱数NRN3をより多く生成することができる。
【0058】
図8は、別の実施形態における乱数発生装置の一例を示す。上述した実施形態と同様の要素については、同じ符号を付し、詳細な説明は省略する。例えば、図8に示す乱数発生装置108は、図2に示す計算サーバ310のFPGA内または図示しないASIC内に設けられ、あるいは、図3に示す計算サーバ410のFPGA内または図示しないASIC内に設けられる。
【0059】
正規乱数生成部NGEN3は、図5に示した正規乱数生成部NGEN3の各XOR2の入力に巡回型のシフタCSFT2が接続される。シフタCSFT2は、第2のシフタの一例である。乱数発生装置108は、シフタCSFT2が追加されることを除き、図5に示した乱数発生装置104と同様の構成である。
【0060】
各シフタCSFT2は、XOR1から出力される一様乱数URN3のビットを巡回的にシフトし、シフトした一様乱数URN3をXOR2に出力する。1つの加算器32に対応する16個のシフタCSFT1と8個のシフタCSFT2において、シフトするビット数は、互いに同じでもよく、相違してもよい。なお、シフタCSFT1、CSFT2でのビットのシフト数は、複数のXOR1、XOR2でそれぞれ生成される一様乱数URN3、URN4に相関が発生しないように、予め決められる。これにより、中心極限定理によって、高品質の正規分布にしたがう正規乱数NRN3を生成することができる。
【0061】
この実施形態では、図7に示す乱数発生装置106と同様に、一様乱数生成器10、20が同じシード値に基づいて一様乱数URN1、URN2を生成する場合にも、互いに相関を廃した12個の一様乱数URN3、URN4を生成することができる。
【0062】
また、図5に示す乱数発生装置104と同様に、XOR1が生成する一様乱数URN3を使用して、XOR2が別の一様乱数URN4を生成することで、少ない一様乱数生成器10、20により多くの一様乱数URN3、URN4を生成することができる。
【0063】
図9は、別の実施形態における乱数発生装置の一例を示す。上述した実施形態と同様の要素については、同じ符号を付し、詳細な説明は省略する。例えば、図9に示す乱数発生装置110は、図2に示す計算サーバ310のFPGA内または図示しないASIC内に設けられ、あるいは、図3に示す計算サーバ410のFPGA内または図示しないASIC内に設けられる。
【0064】
正規乱数生成部NGEN3は、図8に示した正規乱数生成部NGEN3の各XOR1の入力に、図7と同様に巡回型のシフタCSFT1を追加した構成を有する。この実施形態においても、図7および図8に示す実施形態と同様の効果を得ることができる。
【0065】
以上の図1から図17に示す実施形態に関し、さらに以下の付記を開示する。
(付記1)
複数の第1の一様乱数をそれぞれ生成する複数の第1の一様乱数生成器と、
前記複数の第1の一様乱数に基づいて複数の第1の正規乱数をそれぞれ生成する複数の第1の正規乱数生成器と、
前記複数の第1の一様乱数のうち、2以上の前記第1の一様乱数のビット値を論理演算することで複数の第2の一様乱数をそれぞれ生成する複数の第2の一様乱数生成器と、
前記複数の第2の一様乱数に基づいて第2の正規乱数を生成する第2の正規乱数生成器と、を有する乱数発生装置。
(付記2)
前記複数の第2の一様乱数生成器の各々は、前記2以上の前記第1の一様乱数の複数のビットの各々をビット演算することで前記第2の一様乱数を生成する論理演算部を有する付記1に記載の乱数発生装置。
(付記3)
前記論理演算部は、前記2以上の前記第1の一様乱数の複数のビットの各々の排他的論理和をとることで前記第2の一様乱数を生成する第1の排他的論理和回路を有する、付記2に記載の乱数発生装置。
(付記4)
前記論理演算部は、さらに、前記第1の一様乱数のビットを循環シフトし、ビットをシフトした前記第1の一様乱数を、前記第1の排他的論理和回路に出力する第1のシフタを有する、付記3に記載の乱数発生装置。
(付記5)
前記論理演算部は、さらに、複数の前記第2の一様乱数の複数のビットの各々の排他的論理和をとることで第3の一様乱数を生成する第2の排他的論理和回路を有し、
前記第2の正規乱数生成器は、前記第2の一様乱数と前記第3の一様乱数とに基づいて、前記第2の正規乱数を生成する、前記付記3または付記4に記載の乱数発生装置。
(付記6)
前記論理演算部は、さらに、前記第2の一様乱数のビットを循環シフトし、ビットをシフトした前記第2の一様乱数を、前記第2の排他的論理和回路に出力する第2のシフタを有する、付記5に記載の乱数発生装置。
(付記7)
前記複数の第1の正規乱数生成器と前記第2の正規乱数生成器とは、互いに同じ構成を有する、付記1ないし付記6のいずれか1項に記載の乱数発生装置。
(付記8)
2つの前記第1の正規乱数生成器に対して、1つの前記第2の正規乱数生成器が設けられ、
2つの前記第1の正規乱数に対して、1つの前記第2の正規乱数が生成される、付記1ないし付記7のいずれか1項に記載の乱数発生装置。
(付記9)
複数の第1の一様乱数生成器と、複数の第1の正規乱数生成器と、複数の第2の一様乱数生成器と、第2の正規乱数生成器とを含む集積回路の乱数発生方法であって、
前記複数の第1の一様乱数生成器が、複数の第1の一様乱数をそれぞれ生成し、
前記複数の第1の正規乱数生成器が、前記複数の第1の一様乱数に基づいて複数の第1の正規乱数をそれぞれ生成し、
前記複数の第2の一様乱数生成器が、前記複数の第1の一様乱数のうち、2以上の前記第1の一様乱数のビット値を論理演算することで複数の第2の一様乱数をそれぞれ生成し、
前記第2の正規乱数生成器が、前記複数の第2の一様乱数に基づいて第2の正規乱数を生成する、乱数発生方法。
(付記10)
前記複数の第2の一様乱数生成器の各々に含まれる論理演算部が、前記2以上の前記第1の一様乱数の複数のビットの各々をビット演算することで前記第2の一様乱数を生成する、付記9に記載の乱数発生方法。
(付記11)
前記論理演算部に含まれる第1の排他的論理和回路が、前記2以上の前記第1の一様乱数の複数のビットの各々の排他的論理和をとることで前記第2の一様乱数を生成する、付記10に記載の乱数発生方法。
(付記12)
前記論理演算部に含まれる第1のシフタが、前記第1の一様乱数のビットを循環シフトし、ビットをシフトした前記第1の一様乱数を、前記第1の排他的論理和回路に出力する、付記11に記載の乱数発生方法。
(付記13)
前記論理演算部に含まれる第2の排他的論理和回路が、複数の前記第2の一様乱数の複数のビットの各々の排他的論理和をとることで第3の一様乱数を生成し、
前記第2の正規乱数生成器は、前記第2の一様乱数と前記第3の一様乱数とに基づいて、前記第2の正規乱数を生成する、前記付記11または付記12に記載の乱数発生方法。
(付記14)
前記論理演算部に含まれる第2のシフタが、前記第2の一様乱数のビットを循環シフトし、ビットをシフトした前記第2の一様乱数を、前記第2の排他的論理和回路に出力する、付記13に記載の乱数発生方法。
【0066】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【0067】
10 一様乱数生成器
11 正規乱数生成器
12 加算器
20 一様乱数生成器
21 正規乱数生成器
22 加算器
30 一様乱数生成器
31 正規乱数生成器
32 加算器
100、102、104、104、106、108、110 乱数発生装置
210、220 システム
300 サーバシステム
310 計算サーバ
320 管理サーバ
400 サーバシステム
410 計算サーバ
420 管理サーバ
500 ユーザ端末
CSFT1、CSFT2 シフタ
NGEN1、NGEN2、NGEN3 正規乱数生成部
NRN1、NRN2、NRN3 正規乱数
NW ネットワーク
URN1、URN2、URN3、URN4 一様乱数
XOR1、XOR2 排他的論理和回路
図1
図2
図3
図4
図5
図6
図7
図8
図9