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

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

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

<>
  • 特許-乱数発生装置及び乱数発生方法 図1
  • 特許-乱数発生装置及び乱数発生方法 図2
  • 特許-乱数発生装置及び乱数発生方法 図3
  • 特許-乱数発生装置及び乱数発生方法 図4
  • 特許-乱数発生装置及び乱数発生方法 図5
  • 特許-乱数発生装置及び乱数発生方法 図6
  • 特許-乱数発生装置及び乱数発生方法 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-13
(45)【発行日】2023-06-21
(54)【発明の名称】乱数発生装置及び乱数発生方法
(51)【国際特許分類】
   G06F 7/58 20060101AFI20230614BHJP
【FI】
G06F7/58 620
【請求項の数】 7
(21)【出願番号】P 2019131765
(22)【出願日】2019-07-17
(65)【公開番号】P2021018455
(43)【公開日】2021-02-15
【審査請求日】2022-04-07
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】▲高▼津 求
【審査官】豊田 真弓
(56)【参考文献】
【文献】特開2009-104598(JP,A)
【文献】特開2005-038229(JP,A)
【文献】特開2006-293429(JP,A)
【文献】特公昭62-017771(JP,B2)
【文献】米国特許出願公開第2009/0086972(US,A1)
【文献】泉照之,「アダマール変換を利用する多数の無相関な正規分布の不規則信号発生法」,計測自動制御学会論文集,Vol.27, No.3,1991年,第365頁-367頁,https://www.jstage.jst.go.jp/article/sicetr1965/27/3/27_3_365/_pdf
(58)【調査した分野】(Int.Cl.,DB名)
G06F 7/58
(57)【特許請求の範囲】
【請求項1】
複数の第1の擬似乱数を発生させる擬似乱数発生回路と、
前記複数の第1の擬似乱数を直交変換するか、前記複数の第1の擬似乱数と第2の擬似乱数を直交変換することで、複数の正規乱数を発生させる直交変換回路と、
前記複数の正規乱数の2つずつの2乗和を計算することで、前記複数の正規乱数の半数の指数乱数を発生させる2乗和回路と、
を有する乱数発生装置。
【請求項2】
前記擬似乱数発生回路は、互いに1次の相関がない前記複数の第1の擬似乱数を発生させる、請求項1に記載の乱数発生装置。
【請求項3】
前記複数の第1の擬似乱数と前記第2の擬似乱数を直交変換することで、前記複数の正規乱数を発生させる場合、前記複数の正規乱数のそれぞれの符号を判定した複数の判定結果を出力する符号判定回路をさらに有し、
前記直交変換回路は、前記複数の判定結果のうちの一部の判定結果である前記第2の擬似乱数と、前記複数の第1の擬似乱数を直交変換する、
請求項1または2に記載の乱数発生装置。
【請求項4】
前記直交変換回路は、直交変換の1つであるアダマール変換により、前記複数の正規乱数を発生させる、請求項1乃至の何れか一項に記載の乱数発生装置。
【請求項5】
前記複数の第1の擬似乱数の個数または、前記複数の第1の擬似乱数と前記第2の擬似乱数の個数の和である前記直交変換回路の入力数が、2のm乗(mは2以上の自然数)である場合、前記直交変換回路は、2変数のアダマール変換の2の平方根倍の演算を行う各段あたり2の(m-1)乗個のm段のアダマール変換回路を有し、
最後段以外の各段の各アダマール変換回路の2つの出力は、次段の異なるアダマール変換回路に入力される、
請求項1乃至の何れか一項に記載の乱数発生装置。
【請求項6】
前記複数の第1の擬似乱数の個数または、前記複数の第1の擬似乱数と前記第2の擬似乱数の個数の和である前記直交変換回路の入力数が、2のべき乗ではない場合、前記直交変換回路は、前記複数の第1の擬似乱数または前記第2の擬似乱数のうち、前記入力数を2のべき乗で割った余りの個数の擬似乱数を2倍する乗算回路と、2変数のアダマール変換の2の平方根倍の演算を行う複数段のアダマール変換回路を有し、
最後段以外の各段の各アダマール変換回路の2つの出力は、次段の異なるアダマール変換回路に入力され、前記乗算回路の出力は、3段目の何れかのアダマール変換回路に入力される、
請求項1乃至の何れか一項に記載の乱数発生装置。
【請求項7】
擬似乱数発生回路が、複数の第1の擬似乱数を発生させ、
直交変換回路が、前記複数の第1の擬似乱数を直交変換するか、前記複数の第1の擬似乱数と第2の擬似乱数を直交変換することで、複数の正規乱数を発生させ、
2乗和回路が、前記複数の正規乱数の2つずつの2乗和を計算することで、前記複数の正規乱数の半数の指数乱数を発生させる、
乱数発生方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、乱数発生装置及び乱数発生方法に関する。
【背景技術】
【0002】
計算機を用いて情報処理を行う場合、行う処理に対応したアルゴリズムを実行することにより目的とする結果を得るということが行われる。これらのうち、効率のよい確定的なアルゴリズムが存在する場合は比較的短時間で計算処理が行える場合が多い。したがって、効率的な確定的アルゴリズムを発見することは非常に重要である。しかしながら、このような効率的なアルゴリズムが存在するのは比較的簡単な一部の問題だけである。
【0003】
効率的なアルゴリズムが存在しない比較的広範囲な問題に対して有効な計算手法として、乱数を用いて計算処理を行うモンテカルロ法があり、数値計算(特に数値積分)や離散最適化問題などに広く用いられる。モンテカルロ法は、確率変数の漸近的な性質を用いて期待値を求める方法であるため、問題の性質への依存性が比較的小さく広範囲の問題に適用できるという利点をもつ一方、収束が遅いため計算時間が比較的長くなるという欠点をもつ。
【0004】
モンテカルロ法の計算時間が比較的長くなるという欠点を補うため、このアルゴリズムをハードウェア化し、並列に高速に行うということが考えられるが、その場合、ハードウェア内で多数の擬似乱数を同時に発生させることになる。また擬似乱数間の相関が強いと期待値の収束性が悪くなるため、相関の小さな擬似乱数を効率よく多数発生させることが望ましい。
【0005】
ところで擬似乱数と言ってもその確率分布により様々なものがあり、モンテカルロ法では主に一定区間の値で同じ確率をもつ一様乱数、正規分布をもつ正規乱数、指数分布をもつ指数乱数などが用いられる。ハードウェアで効率的に一様乱数を発生させるのは比較的容易である。一様乱数を発生させる乱数発生装置として、LFSR(Linear Feedback Shift Register)やそれを拡張したメルセンヌツイスター(たとえば、非特許文献1参照)などが知られている。しかし、正規乱数、指数乱数をハードウェアで効率的に発生させるのは容易ではない。
【0006】
ソフトウェアでは、一様乱数に対して初等関数(対数関数、三角関数、平方根)を作用させることにより、正規乱数、指数乱数を比較的簡単に発生させることができる。現在のCPU(Central Processing Unit)はほとんどの場合、これらの初等関数を高速に実行する浮動小数演算命令をもっているため、ソフトウェアではこの方法が定番である。しかしながら、ハードウェアで並列に正規乱数、指数乱数を多数発生させる場合、上記の方法は関数計算のための浮動小数演算ユニットまたは変換テーブルを大量に用いることになるため現実的でない。
【0007】
正規乱数を発生させる方法として統計学の中心極限定理を用いる方法がある。この定理は同じ確率分布(平均値及び分散が同じ分布)をもった多数の確率変数の平均を取ると、その分布はもとの確率変数の数を増やすにしたがって正規分布に収束するというものである。これを用いれば、一様乱数から正規乱数を得ることができる。また、平均が0で同じ分散をもつ2つの正規乱数を2乗して加えると指数乱数になるという性質を用いれば、比較的少ない演算回路で正規乱数から指数乱数を得ることができる。
【0008】
中心極限定理を用いた乱数発生方法として、いくつかの手法が提案されている(たとえば、特許文献1,2参照)。しかしながら、それらの手法では1つの正規乱数を生成するのに一様乱数を多数用いるとともに、得られた複数の正規乱数の間の相関が小さくなるような工夫が行われている。
【0009】
また、元の一様乱数の単位時間あたりのビット数よりも多くの正規乱数を発生させる手法もある(たとえば、特許文献3参照)。この手法では同じ出力の異なる時刻での乱数間、異なる出力の同じ時刻の乱数間の相関は軽減できるが、異なる出力の異なる時刻の乱数間の相関は残るため、相関の少ない正規乱数を多数発生する手法ではない。
【0010】
また、正規乱数から指数乱数を発生させる手法として、縦方向と横方向にそれぞれの供給される2つの正規乱数の2乗の和を取ることで、縦横に正方的に(または矩形的に)配置されたセルに指数乱数を与える手法がある(たとえば、非特許文献2参照)。この手法では、指数乱数を得るのに必要とされる正規乱数(の2乗)の数を減らすことができるが、指数乱数間の相関が非常に大きい(相関係数が約0.7)という問題がある。また、正規乱数の2乗を得るのに初等関数による変換が用いられている。
【先行技術文献】
【特許文献】
【0011】
【文献】特開2005-38229号公報
【文献】特開2006-293429号公報
【文献】特公昭62-017771号公報
【非特許文献】
【0012】
【文献】M. Matsumoto and T. Nishimura, “Mersenne Twister: A 623-dimensionally Equidistributed Uniform Pseudo-Random Number Generator”, ACM Transactions Modeling and Computer Simulation, Vol.8, No.1, January, 1998, pp. 3-30
【文献】Takuya Okuyama, Masato Hayashi, and Masanao Yamaoka, “An Ising computer based on simulated quantum annealing by path integral Monte Carlo method”, IEEE International Conference on Rebooting Computing (ICRC), November, 2017
【発明の概要】
【発明が解決しようとする課題】
【0013】
中心極限定理にしたがってハードウェア(たとえば、加算回路)により正規乱数を発生させる従来の手法では、複数の正規乱数を発生させるには多数の擬似乱数を用いなければならず、ハードウェア量が増大する問題がある。用途にもよるが、従来の手法では十分な精度の1つの正規乱数を得るには10から1000程度の一様乱数が用いられる。
【0014】
1つの側面では、本発明は、複数の正規乱数の生成に用いる擬似乱数の数を減らせる乱数発生装置及び乱数発生方法を提供することを目的とする。
【課題を解決するための手段】
【0015】
1つの実施態様では、複数の第1の擬似乱数を発生させる擬似乱数発生回路と、前記複数の第1の擬似乱数を直交変換するか、前記複数の第1の擬似乱数と第2の擬似乱数を直交変換することで、複数の正規乱数を発生させる直交変換回路と、を有する乱数発生装置が提供される。
【0016】
また、1つの実施態様では、乱数発生方法が提供される。
【発明の効果】
【0017】
1つの側面では、本発明は、複数の正規乱数の生成に用いる擬似乱数の数を減らすことができる。
【図面の簡単な説明】
【0018】
図1】正規乱数を発生する乱数発生装置の構成例を示す図である。
図2】指数乱数を発生する乱数発生装置の構成例を示す図である。
図3】帰還を用いた乱数発生装置の構成例を示す図である。
図4】2のべき乗個の一様乱数を入力する直交変換回路の一例を示す図である。
図5】2のべき乗個ではない一様乱数を入力する直交変換回路の一例を示す図である(その1)。
図6】2のべき乗個ではない一様乱数を入力する直交変換回路の一例を示す図である(その2)。
図7】指数乱数を発生する乱数発生回路の変形例を示す図である。
【発明を実施するための形態】
【0019】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
図1は、正規乱数を発生する乱数発生装置の構成例を示す図である。
乱数発生装置10aは、擬似乱数発生回路11と直交変換回路12を有する。
【0020】
擬似乱数発生回路11は、複数(たとえば2のべき乗個)の擬似乱数(x,x,…,xn-1)を発生させる。擬似乱数としては、たとえば、一様乱数、2値乱数などを用いることができる。擬似乱数発生回路11は、たとえば、所定の周期ごとにx,x,…,xn-1を同時に発生させる。
【0021】
直交変換回路12は、擬似乱数発生回路11が発生した複数の擬似乱数を直交変換(たとえば、アダマール変換)することで、複数の正規乱数(y,y,…,yn-1)を発生させる。後述の理由により、直交変換回路12に入力される擬似乱数の数が多くなるほど、直交変換後のy~yn-1のそれぞれは、より正規分布にしたがう確率変数となる。図1には、正規分布にしたがうyの例が示されている。横軸はyの値を表し、縦軸は確率密度を表す。
【0022】
上記から明らかなように乱数発生装置10aによる乱数発生方法の流れとしては、まず、擬似乱数発生回路11が複数の擬似乱数を発生させ、直交変換回路12が複数の擬似乱数を直交変換することで、複数の正規乱数を発生させるというものである。
【0023】
このような乱数発生装置10a及び乱数発生方法では、直交変換により正規乱数を発生させるため、得られる正規乱数の数が、擬似乱数発生回路11が発生させた擬似乱数の数と等しくなる。このため、正規乱数を複数得るために用いる擬似乱数の数を、単に加算回路などを用いて中心極限定理により正規乱数を発生させる場合に比べて少なくすることができる。また、これにより乱数発生装置10aのハードウェア量を少なく抑えることができる。
【0024】
また、擬似乱数発生回路11が、互いに1次の相関がない複数の擬似乱数を発生させることで、後述の理由により、互いに1次の相関がない複数の正規乱数を発生させることができる。
【0025】
なお、擬似乱数発生回路11や直交変換回路12の例については後述する。
図2は、指数乱数を発生する乱数発生装置の構成例を示す図である。図2において図1に示した要素と同じ要素については同一符号が付されている。
【0026】
乱数発生装置10bは、2乗和回路13を有する。
2乗和回路13は、直交変換回路12が出力する複数の正規乱数(y,y,…,yn-1)の2つずつの2乗和を計算することで、正規乱数の半数の指数乱数(z,z,…,zn/2-1)を発生させる。
【0027】
このような乱数発生装置10bでは、2乗和回路13に入力される正規乱数の数は、擬似乱数発生回路11が発生する擬似乱数の数と同数にできるため、複数の指数乱数を得るための擬似乱数の数も少なくて済む。
【0028】
図3は、帰還を用いた乱数発生装置の構成例を示す図である。
図3に示す例では、乱数発生装置10cは、直交変換回路12aが8つの正規乱数(y~y)を発生するとともに、2乗和回路13aが、4つの指数乱数(z~z)を発生するものである。なお、この数は一例であり、この数に限定されるものではない。
【0029】
乱数発生装置10cは、符号判定回路14aを有する。
符号判定回路14aは、直交変換回路12aが出力する複数の正規乱数(符号ビットを含んでいる)のそれぞれの符号を判定した複数の判定結果を出力する。たとえば、符号判定回路14aは、1つの正規乱数から1ビットの判定結果、または2つの正規乱数の組合せから2ビットの判定結果を出力する。判定結果の一部は、直交変換回路12aに擬似乱数として入力される。図3の例では、8つの判定結果のうち、6つが擬似乱数(x~x)として直交変換回路12aに入力されている。
【0030】
これにより、擬似乱数発生回路11aは、2つの擬似乱数(x,x)を発生するだけで、8つの正規乱数と、4つの指数乱数が得られる。つまり、正規乱数及び指数乱数を複数発生させるために用いる擬似乱数の数を、更に少なくすることができる。
【0031】
(直交変換による正規乱数の生成について)
擬似乱数発生回路11が発生する複数の擬似乱数(前述のx~xn-1)のそれぞれが、平均が0、分散がσで互いに1次の相関がない確率変数であるとする。複数の擬似乱数をxとし、xに対する直交変換結果をyとすると(x,yは列ベクトル)、yは、以下の式(1)で表せる。
【0032】
【数1】
【0033】
式(1)において、Pは直交変換行列である。また、yの平均m(各確率変数の平均からなる列ベクトル)は、以下の式(2)で表せる。
【0034】
【数2】
【0035】
式(2)において左から2つ目の項は、列ベクトルyの各確率変数の平均を示す。式(2)のように、平均mは式(1)の平均<y>=<Px>であり、Pmと表せる。mはxの各確率変数の平均からなる列ベクトルであり、前述のように、xの各確率変数の平均は0であるため、m=0(列ベクトル)となる。
【0036】
また、yの分散S は、以下の式(3)で表せる。
【0037】
【数3】
【0038】
は共分散行列で表され、式(3)において左から2つ目の項は、yの確率変数であるyとyの共分散を表す。x~xn-1の場合、i,j=0~n-1である。この共分散行列は、式(3)のように期待値<yy>と表せ、式(1)より期待値<Pxx>となる。ここで、<xx>は、xについての共分散行列であるS となる。xの各確率変数の分散は前述のようにσであり独立であるのでS =σI、PPは単位行列Iになるので、結局、S =σIとなる。
【0039】
したがって、xに対する直交変換であるyの各確率変数は、お互いに1次の相関がなく(共分散行列であるS の対角成分以外(共分散)が0になるため)、平均が0、分散がσの確率変数となる。
【0040】
適切な直交変換を選べば、こうして得られた確率変数は多数の確率変数の線形和となる。線形和の係数の絶対値は必ずしも同じではないため、中心極限定理の前提条件を正しく満たしているわけではないが、基本的には同じ原理が成り立つと考えられる。そのため、xの確率変数の数が多くなるにつれて、得られるyの各確率変数はより正規分布にしたがうようになることが期待できる。
【0041】
以下では、簡単のため平均が0の一様乱数にアダマール変換を施す場合について説明を行う。
2変数に対するアダマール変換は、以下の式(4)で表せる。
【0042】
【数4】
【0043】
直交変換の入力数である一様乱数の個数が2のm乗である場合、各段あたり2の(m-1)乗回でm段の同様のアダマール変換を繰り返すことにより、2のm乗個の一様乱数に対するアダマール変換を得ることができる(図4参照)。この操作は高速フーリエ変換とほぼ同じであるが、位相回転因子がないため、各段で同じ演算を行う点が異なる。
【0044】
なお、アダマール変換の演算を行うハードウェア量を減らすために、以下の式(5)のように2の平方根分の1を省略することが望ましい。その場合、各段の出力における分散が式(4)に基づくアダマール変換による出力に対して2倍になり、単体での動作は正確には直交変換とは呼べなくなるが、必要であれば最終的な出力に対して適当な定数を掛ける回路を設けることで分散を調整できる。したがって、この変換を直交変換といっても問題はないと思われるので、以下でもそのように記述している。
【0045】
【数5】
【0046】
式(5)による直交変換を繰り返した後に得られる確率変数は、元の全ての確率変数に対して1または-1を掛けて足したものになっている。平均が0の一様乱数に-1を掛けたものの分布は元の分布と同じものであるので、得られた確率変数は同じ分布をもつ多数の確率変数の和に相当し、中心極限定理をそのまま適用することができる。したがって、得られる確率変数は、元の確率変数(一様乱数)の数が多くなるにつれて正規分布に近づいていく。
【0047】
2進nビットの整数である一様乱数を2個加算することにより得られる擬似正規分布の分散は、2m(22n-1)/12であり、その情報量は、ほぼn+(m/2)+(1/2)(log(πe(1-2-2n)/6)となる。したがってmが十分大きければn=1、すなわち2値乱数を用いても十分な精度(分解能)の正規乱数が得られる。
【0048】
また、2つの正規乱数の2乗和として得られる指数乱数の情報量を正しく見積もることは難しいが、同じ2乗和をもつ整数の組が少ないことを考慮すると、おおよそ2倍の2n+m-3ビットと見積もられ、十分な精度(分解能)の指数乱数が得られると考えられる。
【0049】
(擬似乱数発生回路11,11aが発生する擬似乱数の例、及び擬似乱数発生回路11,11aの例について)
図1図3に示した乱数発生装置10a~10cは、上記のような中心極限定理を用いて正規乱数を発生させるため、出力する正規乱数の数が多い場合、正規乱数の精度は擬似乱数発生回路11,11aが発生する擬似乱数の分布にはほとんど影響を受けない。このため、擬似乱数として2値乱数を用いてもよい。しかしながら、出力する正規乱数の数が比較的少ないときは、得られる正規乱数の精度を上げるため(情報量を増やすため)、複数のビットを用いた一様乱数を用いることも有効である。
【0050】
2値乱数または一様乱数を発生する擬似乱数発生回路11,11aとして、たとえば、質のよい乱数を発生することで知られているメルセンヌツイスターを用いることができる。メルセンヌツイスターの出力を1ビットまたは数ビットずつに分けたものを、直交変換回路12,12aの入力とすればよい。ただ、多くの一様乱数の加減算が行われる場合、それらの一様乱数の質に対する要求は低いため、擬似乱数発生回路11,11aとして、単純なLFSRを用いても十分な精度の正規乱数を生成できるものと考えられる。また、擬似乱数発生回路11,11aは、1つの乱数発生器であってもよいし、乱数シードの異なる複数の乱数発生器によって構成されていてもよい。
【0051】
擬似乱数発生回路11は、必要とされる正規乱数の数と同数の一様乱数を発生し、発生した一様乱数の各ビットを直交変換回路12の入力とする。擬似乱数発生回路11aは、必要とされる正規乱数の数よりも少ない一様乱数を発生し、発生した一様乱数の各ビットを直交変換回路12aの入力とする。直交変換回路12,12aに同時に入力される一様乱数の数が多ければ、上記のように一様乱数として2値乱数を用いても十分精度のよい正規乱数が得られる。
【0052】
なお、上記の説明では直交変換回路に入力する擬似乱数の平均は0であるとしていた。しかしながら、メルセンヌツイスターやLFSRで得られる2進整数の擬似乱数の平均は0ではない。しかしながら次のような理由でこれはほとんど問題にならない。アダマール変換(の定数倍)により得られた正規乱数は入力された擬似乱数に±1を掛けたものの和になっているが、そのうちの1つ(下記の回路例が用いられる場合はy)を除いて、係数が+1のものと係数が-1のものの数が同数となり元の擬似乱数の平均値は相殺される。したがって全てが+1となるもの(下記の回路例が用いられる場合はy)のみ平均値と擬似乱数の数を掛けた値を引いてやれば、平均値の影響を取り除くことができる。
【0053】
(直交変換回路12,12aの例)
以下に示す直交変換回路12,12aの例は、直交変換として最も実装が容易で最も効果が高い(中心極限定理をそのまま適用できるため)アダマール変換を行う回路を用いたものであるが、他の直交変換を行う回路を用いることもできる。
【0054】
なお、上記の説明のように、直交変換回路12,12aに入力される複数の一様乱数の間に1次の相関がない場合、直交変換によって生成される複数の正規乱数間にも1次の相関はないが完全に独立なわけではない。しかしながら、生成される複数の正規乱数間に残存する相関は非常に高次のものであり、実用上問題にならないと考えられる。
【0055】
また、本来の直交変換回路は、入力される一様乱数の分散が保存されるものであるが、上記のように、ハードウェア量を減らすために、前述の式(5)のように2の平方根分の1を省略したアダマール変換を行う回路とすることが望ましい。以下の説明では、2の平方根分の1を省略した2変数のアダマール変換(2変数のアダマール変換の2の平方根倍の演算)を行う回路を組合せた直交変換回路の例を説明する。
【0056】
図4は、2のべき乗個の一様乱数を入力する直交変換回路の一例を示す図である。
図4には、2個の変数(一様乱数(x~x))についてのアダマール変換を行う直交変換回路20(Hと表記されている)の例が示されている。直交変換回路20は、それぞれ4変数についてのアダマール変換を行うアダマール変換回路21,22(Hと表記されている)と、それぞれ2変数についてのアダマール変換を行うアダマール変換回路23,24,25,26(Hと表記されている)を有する。
【0057】
アダマール変換回路21は、それぞれ2変数のアダマール変換を行うアダマール変換回路21a,21b,21c,21dを有する。アダマール変換回路21aは、入力される2変数(x,x)の和と差を出力する。このような演算を行うために、アダマール変換回路21aは、加算器21a1と減算器21a2を有する。なお、他の“H”(アダマール変換回路21b,21c,21d,23,24,25,26)も同様に加算器と減算器を有する。アダマール変換回路21bは、入力される2変数(x,x)の和と差を出力する。アダマール変換回路21cは、アダマール変換回路21aの2つの出力のうちの一方の値と、アダマール変換回路21bの2つの出力のうちの一方の値の和と差を出力する。アダマール変換回路21dは、アダマール変換回路21aの2つの出力のうちの他方の値と、アダマール変換回路21bの2つの出力のうちの他方の値の和と差を出力する。
【0058】
アダマール変換回路22についてもアダマール変換回路21と同様の回路構成となっている。
アダマール変換回路23は、アダマール変換回路21の1つの出力の値と、アダマール変換回路22の1つの出力の値の和と差を出力する。アダマール変換回路24は、アダマール変換回路21の1つの出力(アダマール変換回路23に入力されるもの以外)の値と、アダマール変換回路22の1つの出力(アダマール変換回路23に入力されるもの以外)の値の和と差を出力する。アダマール変換回路25は、アダマール変換回路21の1つの出力(アダマール変換回路23,24に入力されるもの以外)の値と、アダマール変換回路22の1つの出力(アダマール変換回路23,24に入力されるもの以外)の値の和と差を出力する。アダマール変換回路26は、アダマール変換回路21の1つの出力(アダマール変換回路23,24,25に入力されるもの以外)の値と、アダマール変換回路22の1つの出力(アダマール変換回路23,24,25に入力されるもの以外)の値の和と差を出力する。
【0059】
なお、上記の直交変換回路20の結線は一例であるが、最後段以外の各段の各“H”の2つの出力は次段の異なる“H”に入力される。さらに、各段の“H”の2つの入力は、前段の異なるブロックのアダマール変換回路の出力であることが望ましい。たとえば、図4の例では、アダマール変換回路23の2つの入力は、前段の異なるブロック(アダマール変換回路21,22)の出力となっている。このような構成としなくても生成される複数の正規乱数間の直交性(1次の相関がないこと)は保証されるが、より多くの一様乱数が関係した精度のよい正規乱数を発生させるためには、このような構成とすることが望ましい。
【0060】
図1図3に示した直交変換回路12,12aは、2のm乗個(図4の例ではm=3)の一様乱数についての直交変換を行う場合、各段あたり2の(m-1)乗個のm段の上記のような“H”の組合せによって実現できる。
【0061】
図5及び図6は、2のべき乗個ではない一様乱数を入力する直交変換回路の一例を示す図である。図5及び図6において、図4に示した要素とは同じ符号が付されている。
図5には、10個の変数(一様乱数(x~x))についての直交変換を行う直交変換回路30a(H10と表記されている)の例が示されている。直交変換回路30aは、図4に示した各要素の他に、乗算器31と、2変数のアダマール変換を行うアダマール変換回路32を有する。
【0062】
乗算器31は、10/2の余りである2つの変数(x,x)の値をそれぞれ2倍する。乗算器31の2つの出力(乗算結果)は、3段目の“H”(アダマール変換回路23~26,32)の何れか2つに供給される。図5の例では、乗算器31の2つの出力は、アダマール変換回路24,32に供給されている。2変数のアダマール変換の2の平方根倍の演算を行うアダマール変換回路が用いられる場合、1段あたりの分散が2倍になる。図5の例では、3段目の“H”に対する入力の分散を合わせるために、“H”2段分の4倍の分散が得られるように、2つの変数の値(振幅)を2倍にする乗算器31が用いられているのである。
【0063】
アダマール変換回路23~26,32のうち、乗算器31の出力が供給されるもの(図5の例では、アダマール変換回路24,32)は、乗算器31の出力の値と、アダマール変換回路21,22の4つの出力のうちの1つの値との和と差を出力する。
【0064】
図6には、12個の変数(一様乱数(x~x11))についての直交変換を行う直交変換回路30b(H12と表記されている)の例が示されている。直交変換回路30bは、図5に示した各要素の他に、乗算器33と、2変数のアダマール変換を行うアダマール変換回路34を有する。
【0065】
乗算器31,33のそれぞれは、12/2の余りである4つの変数(x~x11)のうちの2つの値をそれぞれ2倍する。図6の例では乗算器31はx,xをそれぞれ2倍し、乗算器33はx10,x11をそれぞれ2倍する。乗算器31,33のそれぞれの2つの出力(乗算結果)は、3段目の“H”(アダマール変換回路23~26,32,34)の何れか2つに供給される。図6の例では、乗算器31の2つの出力は、アダマール変換回路23,32に供給され、乗算器33の2つの出力は、アダマール変換回路24,34に供給されている。
【0066】
アダマール変換回路23~26,32,34のうち、乗算器31,33の出力が供給されるもの(図6の例では、アダマール変換回路23,24,32,34)は、乗算器31,33の出力の値と、アダマール変換回路21,22の4つの出力のうちの1つの値との和と差を出力する。
【0067】
なお、上記の直交変換回路30a,30bの結線は一例であるが、上記と同様の理由により各段の“H”に入力される2つの前段の出力は、前段の異なるブロックのアダマール変換回路の出力であることが望ましい。
【0068】
また、乗算器31,33の各出力は1つの変数の倍数であるため、より多くの一様乱数が関係した精度のよい正規乱数を発生させるためアダマール変換回路23~26,32,34のうちの同じものに対する2つの入力とならないように結線されることが望ましい。また、図5図6よりも“H”が多段の直交変換回路である場合、乗算器31,33の出力を用いたアダマール変換結果が、4段目以降の近い段でも同じアダマール変換回路の2つの入力とならないように結線されることが望ましい。
【0069】
図1図3に示した直交変換回路12,12aは、2のべき乗個ではない一様乱数についての直交変換を行う場合、たとえば、以上のような複数の“H”と乗算器との組合せによって実現できる。
【0070】
(指数乱数を発生する乱数発生装置の変形例)
図2図3に示したように、指数乱数は2つの正規乱数の2乗和を取ることで得られる。前述のように直交変換回路12,12aが複数段の“H”を用いて実現される場合、最後段の複数の“H”のうちのある“H”の2つの入力をx,xとすると、2つの出力はx+x,x-xとなる。これらの2つの出力の2乗和は、(x+x+(x-x=2(x +x )となる。一方、2つの入力(x,x)の2乗和は、x +x となる。つまり、最後段の“H”がなくても、平均値が半分になることを除いて同じ指数乱数を得ることができる。
【0071】
図7は、指数乱数を発生する乱数発生回路の変形例を示す図である。図7において、図3に示した要素と同じ要素については同一符号が付されている。
乱数発生装置10dでは、図3に示した直交変換回路12aが複数段の“H”を用いて実現される場合、最後段の複数の“H”が省略されている。乱数発生装置10dが有する直交変換回路12a1,12a2は、たとえば、図4に示したアダマール変換回路21,22に相当する。
【0072】
直交変換回路12a1は、4つの変数(一様乱数(x~x))を直交変換した4つの変数(y0a,y1a,y2a,y3a)を出力する。
直交変換回路12a2は、4つの変数(一様乱数(x~x))を直交変換した4つの変数(y4a,y5a,y6a,y7a)を出力する。
【0073】
2乗和回路13は、直交変換回路12a1が出力する変数と直交変換回路12a2が出力する変数の2乗和を演算することで、4つの指数乱数(z~z)を出力する。
たとえば、z=y0a +y4a 、z=y1a +y5a 、z=y2a +y6a 、z=y3a +y7a である。
【0074】
比較回路15は、各指数乱数の計算に用いられる2変数の大小の比較結果を出力する。たとえば、比較回路15は、zの計算に用いられるy0aとy4aの比較結果として、y0a≧y4aの場合、1を出力し、y0a<y4aの場合、0を出力する。これにより、(y0a-y4a)の符号(正負)を判定することと同じとなる。さらに、比較回路15は、y0aと-y4aの比較結果として、y0a≧-y4aの場合、1を出力し、y0a<-y4aの場合、0を出力するようにすれば、(y0a+y4a)の符号を判定することと同じとなる。つまり、比較回路15は、図3に示した符号判定回路14aと同様の機能を実行することになる。
【0075】
比較回路15が出力する比較結果の一部は、直交変換回路12a1,12a2に一様乱数として入力される。図3の例では、8つの比較結果のうち、2つが一様乱数(x,x)として直交変換回路12a1に入力され、4つが一様乱数(x~x)として直交変換回路12a2に入力されている。
【0076】
以上のような乱数発生装置10dでは、最後段の複数の“H”を省けるため、ハードウェア量をさらに抑えることができる。
なお、正規乱数と指数乱数は1次の相関はもたないが、正規乱数に基づいて指数乱数が生成されているため、互いに独立ではない。したがって、正規乱数と指数乱数を両方用いても問題がないかどうかは用途によると思われる。
【0077】
ところで、図3の乱数発生装置10cや図7の乱数発生装置10dは、図2の乱数発生装置10bでは用いていない情報を利用するものである。乱数発生装置10bでは、2乗和回路13に入力された2つの正規乱数に対する平面を考えたとき、半径方向の情報のみを用いて2乗和が生成され、角度方向の情報は利用されていない。この情報は2乗和とは独立であるため、取り出して利用できるはずである。そこで、たとえば、2つの正規乱数の情報(符号)を取り出せば2ビットの信号が得られるので、これを帰還して次の正規乱数発生のための入力として用いれば、一様乱数を発生する回路が不要となる可能性がある。
【0078】
しかしながら、帰還した信号だけから発生した正規乱数は比較的短い周期をもつ可能性がある。これを避けるため、図3の乱数発生装置10cや図7の乱数発生装置10dは、符号判定回路14aが出力する判定結果や比較回路15が出力する比較結果の一部と、擬似乱数発生回路11aが発生する擬似乱数とを用いて、次の正規乱数及び指数乱数を生成している。
【0079】
なお、乱数発生装置10c,10dは、上記のように指数乱数と独立な情報を再利用するという観点に基づいたものであるが、正規乱数発生器としても用いることができる。ただし発生時刻の異なる正規乱数間に多少の相関が発生する可能性がある。
【0080】
ところで、上記のように発生された複数の指数乱数は、デジタル回路を用いて離散最適化問題を解く最適化装置などに用いることができる。最適化装置は、たとえば、評価関数(エネルギー関数とも呼ばれる)の値が最小となる状態変数の値の組合せを探索するものである。最適化装置では、各状態変数の値が変化するときの評価関数の値の変化(エネルギー変化)が計算され、計算されたエネルギー変化が正の場合でも解が局所解にトラップされることを抑制するために所定の確率で状態変数の変化(状態遷移)を許容する。この状態変数の変化を許容するか否かの判定を、エネルギー変化と指数乱数との比較結果に基づいて行うことができる。状態変数の数が多くなるほど(問題の規模が大きくなるほど)用いられる指数乱数の数も増加する。
【0081】
このほかにも、複数の指数乱数や複数の正規乱数は、たとえば、モンテカルロ法などを用いて数値計算、最適化、シミュレーションなどを行う各種装置に適用できる。
以上、実施の形態に基づき、本発明の乱数発生装置及び乱数発生方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【0082】
10a 乱数発生装置
11 擬似乱数発生回路
12 直交変換回路
~xn-1 擬似乱数
~yn-1 正規乱数
図1
図2
図3
図4
図5
図6
図7