JP5875719B1 - 乱数生成装置、乱数生成方法、およびプログラム - Google Patents

乱数生成装置、乱数生成方法、およびプログラム Download PDF

Info

Publication number
JP5875719B1
JP5875719B1 JP2015014913A JP2015014913A JP5875719B1 JP 5875719 B1 JP5875719 B1 JP 5875719B1 JP 2015014913 A JP2015014913 A JP 2015014913A JP 2015014913 A JP2015014913 A JP 2015014913A JP 5875719 B1 JP5875719 B1 JP 5875719B1
Authority
JP
Japan
Prior art keywords
column
random number
value
unit
number acquisition
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015014913A
Other languages
English (en)
Other versions
JP2016139348A (ja
Inventor
大 五十嵐
大 五十嵐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2015014913A priority Critical patent/JP5875719B1/ja
Application granted granted Critical
Publication of JP5875719B1 publication Critical patent/JP5875719B1/ja
Publication of JP2016139348A publication Critical patent/JP2016139348A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】複数のiについて0以上i以下の乱数を高速に生成する。【解決手段】乱数取得部15が、2進数で表現された乱数の各桁の値を要素に含む第1列を得、論理積演算部16が、当該第1列と第2列の要素単位の論理積演算結果である第3列を得る。当該第3列によって表される値がiよりも大きい場合、制御部17は、乱数取得部15および論理積演算部16の処理を再び実行させる。一方、当該第3列によって表される値がi以下の場合、制御部17はiを増加させてからこれらの処理を再び実行する。ただし、第2列は、下位i桁の値がすべて1であり、かつ、残りの桁の値が0である、2進数で表現された列である。【選択図】図1

Description

本発明は、乱数生成技術に関し、特に、長さの異なる複数の乱数を生成する技術に関する。
各1≦i<n(ただし、n≧2)について0以上i以下の乱数を生成する。このような乱数の生成は、L個のランダムビットを生成し、それらを各桁の値とする2進数表現値に対応する10進数表現値aとiとの大小判定を行い、a>iであれば処理をやり直し、a≦iであればaを乱数として採用することで実現できる(例えば、非特許文献1参照)。
ヨハネス ブーフマン、「暗号理論入門―暗号アルゴリズム、署名と認証、その数学的基礎」、シュプリンガー・フェアラーク東京、2001年7月、P114.
上述の方法では、iが2に対して小さいときに乱数の生成確率が極度に低下し、乱数の生成速度が低下する。
本発明の課題は、複数のiについて0以上i以下の乱数を高速に生成することである。
2進数で表現された乱数の各桁の値を要素に含む第1列を得、当該第1列と第2列の要素単位の論理積演算結果である第3列を得、当該第3列によって表される値がiよりも大きい場合にこれらの処理を再び実行し、当該第3列によって表される値がi以下の場合にiを増加させてからこれらの処理を実行する。ただし、第2列は、下位i桁の値がすべて1であり、かつ、残りの桁の値が0である、2進数で表現された列である。
本発明では、複数のiについて0以上i以下の乱数を高速に生成できる。
図1は実施形態の乱数生成装置の機能構成を説明するためのブロック図である。 図2は実施形態の乱数生成方法を説明するためのフロー図である。 図3は実施形態の処理を例示するための図である。 図4は実施形態の処理を例示するための図である。
以下、本発明の実施形態を説明する。
[概要]
実施形態では、次のように長さの異なる複数の乱数を生成する。まず、2進数で表現された乱数の各桁の値を要素に含む「第1列」を得る(乱数取得ステップ)。次に、「第1列」と「第2列」との要素単位の論理積演算結果(要素ごとのAND演算結果、例えば、ビットAND演算結果)である「第3列」を得る(論理積演算ステップ)。ただし、「第2列」は、正の整数iに対して広義単調増加(非減少)の関係にある個数の下位j桁の要素が1であり、かつ、残りの桁の要素が0である、2進数で表現された列である。「第1列」「第2列」「第3列」の長さ(要素数、ビット数)は、例えば同一である。ここで「第3列」によって表される値がiよりも大きい場合には、0以上i以下の乱数の生成に失敗したとして、このiに対して乱数取得ステップおよび論理積演算ステップの処理を再び実行する(やり直す)。一方、「第3列」によって表される値がi以下の場合には、0以上i以下の乱数の生成に成功したとして当該乱数を採用し、新たなiについて0以上i以下の乱数を生成するために、iを増加させてから乱数取得ステップおよび論理積演算ステップの処理を実行する。この方法では、「第1列」によって表される値とiとを比較するのではなく、「第2列」によって「第1列」をマスクして得られる「第3列」によって表される値とiとを比較する。そのため、0以上i以下の乱数の生成に成功する確率が向上し、高速で0以上i以下の乱数を生成できる。なお、「j」は「i」に対して広義単調増加する関係にある正の整数であればよいが、jが1+log i以下の最大の整数である場合に最も効率がよい。すなわち、床関数floorに対してj=floor(1+log i)であることが望ましい。j=floor(1+log i)である場合、特にiがメルセンヌ数であれば(i=2−1、ただしNは正整数)、0以上i以下の乱数が生成される確率が100%となる。そのため、iがメルセンヌ数であると判定された場合、「第3列」によって表される値とiとを比較することなく、0以上i以下の乱数の生成に成功したとして当該乱数を採用し、新たなiについて0以上i以下の乱数を生成するために、iを増加させてから乱数取得ステップおよび論理積演算ステップの処理を実行してもよい。
好ましくは、「第3列」によって表される値がi以下の場合、0以上i以下の乱数の生成に成功したとして当該乱数を採用し、新たなiについて0以上i以下の乱数を生成するためにiの値を増加させ、「第4列」と「第2列」との要素単位の論理和演算結果(要素ごとのOR演算結果、例えば、ビットOR演算結果)を新たな「第2列」とし、乱数取得ステップおよび論理積演算ステップの処理を実行する。ただし、「第4列」は2進数で表現されたiの各桁の値を要素とする列である。要素単位の論理和演算は低コストであるため、高速で「第2列」を得ることができる。また、要素単位の論理和演算に必要な記憶容量も小さい。
より好ましくは、「第3列」によって表される値がi以下の場合に0以上i以下の乱数の生成に成功したとして当該乱数を採用し、新たなiについて0以上i以下の乱数を生成するために、iの値を1増加させ、iの値を1増加させるたびに、「第4列」と「第2列」との要素単位の論理和演算結果を新たな「第2列」とし、乱数取得ステップおよび論理積演算ステップの処理を実行する。この場合、iの値が1増加するたびに新たな「第2列」が生成されるが、これによって常に「第2列」が異なる列に更新されるとは限らない。すなわち、iの値によっては「第4列」と「第2列」との要素単位の論理和演算結果が当該「第4列」と同一となる場合もある。例えば、j=floor(1+log i)である場合、「第4列」が変更されるのはiが2j−1になったときのみである。そのため、iの値を1増加するたびに必ず新たな「第2列」を生成することは一見非効率に見える。しかしながら、通常、iが「第2列」を変更する値に増加したか否か(例えば、i=2j−1になるか否か)を判定するための演算コストは、「第2列」を生成するための要素単位の論理和演算の演算コストよりも大きい。そのため、iの値を1増加するたびに必ず新たな「第2列」を生成するほうが演算コストを低く抑えることができる。ただし、iが「第2列」を変更する値に増加したか否かを判定するための演算コストが、「第2列」を生成するための要素単位の論理和演算の演算コストよりも小さい環境であれば、iが「第2列」を変更する値に増加したか否かを判定し、iが「第2列」を変更する値に増加した場合にのみ「第2列」を更新してもかまわない。
上述のような処理を1≦i<n(ただし、nは2以上の整数)の各iについて実行することで、これらの各iについて0以上i以下の乱数を高速に生成できる。このようなn−1個の乱数は、例えば、n個の元をランダムに置換するn−ランダム置換に利用できる。すなわち、n−ランダム置換後の集合のサイズはn!であり、1〜n−1番目の要素の置換先をランダムに決めれば、残りの1個の要素の置換先も決まる。上記のn−1個の乱数は1〜n−1番目の要素の置換先を決めるために利用でき、n−ランダム置換された列と一対一に対応する。
また、上記の処理が並列処理されてもよい。例えば、乱数取得ステップにおいて、複数の「第1列」を含む「第1集合列」を得、論理積演算ステップにおいて、「第1集合列」と「第2集合列」との要素単位の論理積演算結果である「第3集合列」を得る。ただし、「第1集合列」が含む複数の「第1列」は互いに独立した列であり、複数の「第1列」の相互間に関係はない。「第2集合列」は複数の「第2列」を含み、「第3集合列」は複数の「第3列」を含む。その他の処理は上述した通りである。
[第1実施形態]
次に、第1実施形態を説明する。
<構成>
図1に例示するように、本形態の乱数生成装置1は、バイナリ乱数生成部11、記憶部12、カウンタ13、論理和演算部14、乱数取得部15、論理積演算部16、制御部17、および出力部18を有する。乱数生成装置1は、例えば、CPU(central processing unit)等のプロセッサ(ハードウェア・プロセッサ)やRAM(random-access memory)・ROM(read-only memory)等のメモリ等を備える汎用または専用のコンピュータが所定のプログラムを実行することで構成される装置である。このコンピュータは1個のプロセッサやメモリを備えていてもよいし、複数個のプロセッサやメモリを備えていてもよい。このプログラムはコンピュータにインストールされてもよいし、予めROM等に記録されていてもよい。また、CPUのようにプログラムが読み込まれることで機能構成を実現する電子回路(circuitry)ではなく、プログラムを用いることなく処理機能を実現する電子回路を用いて一部またはすべての処理部が構成されてもよい。また、1個の装置を構成する電子回路が複数のCPUを含んでいてもよい。
<処理>
本形態では、1≦i<n(ただし、nは2以上の整数)の各iについて0以上i以下の乱数を生成する。「第1列」「第2列」「第3列」をそれぞれL個の要素からなるベクトルとして扱い、乱数生成装置1がLビット精度で演算を行うものとする。本形態ではj=floor(1+log i)であり、Lがfloor(1+log (n−1))よりも大きな正の整数である場合を説明する。
図2に例示するように、まず、カウンタ13が正の整数iを1に初期化し(i:=1)、論理和演算部14がL個の要素からなるベクトルM∈{0,1}(第2列)を全ての要素が0のベクトルに初期化する(M:=0)。なお、「α:=β」はαをβと定義することを意味する(ステップS13)。
カウンタ13はiを出力し、iは論理和演算部14に入力される。論理和演算部14は、2進数で表現されたiの各桁の値を要素とするL個の要素からなるベクトルB∈{0,1}(第4列)とベクトルMi−1∈{0,1}(第2列)との要素単位の論理和演算(ビットOR演算)を行い、新たなベクトルM∈{0,1}(新たな第2列)を得る(M:=Mi−1 OR B)。ただし、「α OR β」はαとβとの要素単位の論理和演算を表す。ベクトルBまたはMi−1の第k要素(ただし、k=0,・・・,L−1)が1である場合、ベクトルMの第k要素は1となり、ベクトルBおよびMi−1の第k要素がともに0の場合、ベクトルMの第k要素は0となる。例えば、図3に例示するように、i=1,2,3,4,5,・・・の場合のベクトルMは、それぞれ、M=(00…0001),M=(00…0011),M=(00…0011),M=(00…0111),M=(00…0111),・・・となる。すなわち、ベクトルMは下位j=floor(1+log i)桁の要素が1であって残りの桁の要素が0となる。
乱数取得部15は記憶部12にL個の要素からなるLビットのバイナリ乱数ベクトルr∈{0,1}(第1列)が残存しているかを判定する(ステップS12)。バイナリ乱数ベクトルrが残存している場合には、乱数取得部15は記憶部12からバイナリ乱数ベクトルrを読み出して出力する(ステップS15)。読み出されたバイナリ乱数ベクトルrは記憶部12から削除される。一方、バイナリ乱数ベクトルrが残存していない場合には、バイナリ乱数生成部11がLビットのバイナリ乱数ベクトルr∈{0,1}を生成して記憶部12に格納し、乱数取得部15は記憶部12からバイナリ乱数ベクトルrを読み出して出力する。なお、処理の高速化のため、バイナリ乱数生成部11は並列処理によって複数個のバイナリ乱数ベクトルrを生成して記憶部12に格納することが望ましい。出力されたバイナリ乱数ベクトルrは論理積演算部16に送られる(ステップS15)。
論理積演算部16は、バイナリ乱数ベクトルrとベクトルMとの要素単位の論理積演算(ビットAND演算、等号判定)を行い、その演算結果であるベクトルt∈{0,1}(第3列)を得て出力する(t:=r AND M)。ただし、「α AND β」はαとβとの要素単位の論理積演算を表す。ベクトルMの第k要素(ただし、k=0,・・・,L−1)が0である場合、ベクトルtの第k要素は0となり、ベクトルMの第k要素が1である場合、ベクトルtの第k要素はバイナリ乱数ベクトルrの第k要素となる。すなわち、ベクトルtはバイナリ乱数ベクトルrをベクトルMでマスク(等号処理)して得られるベクトルである。図4の例では、ベクトルMの下位j=floor(1+log i)個の要素がすべて1であり、上位L−j個の要素がすべて0である。そのため、ベクトルtの下位j個はバイナリ乱数ベクトルr=(rL−1,・・・,r,r)の下位j個の要素rj−1,・・・,r,rとなり、ベクトルtの上位L−jビットはすべて0となる。ベクトルtは制御部17に送られる(ステップS16)。
制御部17は、さらにカウンタ13から出力されたiを入力とし、ベクトルtによって表される値(ベクトルtの10進数表現値)と整数iとを比較する。本形態の例では、制御部17がベクトルtによって表される値が整数i以下であるかを判定する(ステップS171)。ベクトルtによって表される値がiよりも大きいと判定された場合には、0以上i以下の乱数の生成に失敗したとし、処理がステップS12に戻される。これにより、同じiについて乱数取得部15よび論理積演算部16の処理が再び実行される。一方、ベクトルtによって表される値がi以下であると判定された場合には、0以上i以下の乱数の生成に成功したとし、i=n−1であるかが判定される(ステップS172)。i=n−1でなければ、i+1を新たなi(i:=i+1)とし(ステップS173)、処理がステップS14に戻される。一方、i=n−1であれば、すべてのi=1,・・・,n−1について0以上i以下の乱数の生成が成功したとし、生成された乱数t,・・・,tn−1を出力する(ステップS18)。さらに多くの乱数必要な場合には、上述の処理を繰り返せばよい。
<本形態の特徴>
従来のようにバイナリ乱数ベクトルr∈{0,1}が表す値とiとの大小判定によって0以上i以下の乱数を生成する場合、2に対してiが小さいと、0以上i以下の乱数の生成確率が極度に低下し、乱数の生成速度が低下してしまう。一方、本形態では、バイナリ乱数ベクトルr∈{0,1}を、下位j=floor(1+log i)桁の要素が1であって他の要素が0であるベクトルMでマスクして得られるベクトルtが表す値とiとの大小判定を行う。2(2のMのビット数jべき)は、iの高々2倍であるから,1/2以上の確率で0以上i以下の乱数の生成に成功する。
また、最初からiのビット数分だけ乱数を生成しようとすると、iによって処理が異なるために却って速度は低下する。コンピュータではできるだけ同じ処理の繰り返しの方が高速である。本形態では各iについて同じ処理を繰り返すため高速である。
ベクトルMの計算は、毎回iのビット数を計算するのではなく、2進数で表現されたiの各桁の値を要素とするL個の要素からなるベクトルBとベクトルMi−1との要素単位の論理和演算(ビットOR演算)を繰り返すことによって実現される。要素単位の論理和演算は、多くのコンピュータで最も高速な演算の一つである。
[第2実施形態]
iがメルセンヌ数である場合、ベクトルtによって表される値は必ずi以下となる。そのため、iがメルセンヌ数であると判定された場合には、ベクトルtによって表される値と整数iとを比較することなく、0以上i以下の乱数の生成に成功したことにしてもよい。以下では、これまで説明した事項との相違点を中心に説明し、既に説明した事項については同じ参照番号を引用して説明を省略する。
<構成>
図1に例示するように、本形態の乱数生成装置2は、バイナリ乱数生成部11、記憶部12、カウンタ13、論理和演算部14、乱数取得部15、論理積演算部16、制御部27、および出力部18を有する。乱数生成装置2は、例えば、上述したコンピュータに所定のプログラムが読み込まれることで構成されてもよいし、少なくとも一部の要素がハードウェアのみによって構成されてもよい。
<処理>
ステップS11〜S16の処理は第1実施形態と同じである。ただし、第2実施形態では、ステップS16の後、iがメルセンヌ数であるか(i=2j−1−1であるか)を判定する(ステップS275)。ここで、iがメルセンヌ数でなければステップS171の処理に進み、iがメルセンヌ数であれば0以上i以下の乱数の生成に成功したとし、ステップS172の処理に進む。その他は第1実施形態と同じである。
<本形態の特徴>
j=floor(1+log i)である場合、iがメルセンヌ数であるならば、ステップS16で生成されたベクトルtによって表される値は必ず0以上i以下となる。本形態では、このような場合にステップS171の大小判定を省略するため、環境によっては、第1実施形態よりも演算コストを低減できる。
[第3実施形態]
j=floor(1+log i)である場合、ステップS14の処理(M:=Mi−1 OR B)によってM≠Mi−1となるのは、ステップS173によって更新されたiが2j−1の場合のみである。本形態では、iが2j−1に更新される場合のみにステップS14の処理(M:=Mi−1 OR B)を行い、その他の場合にはステップS14の処理を行うことなく、Mi−1をそのままMとして用いる。
<構成>
図1に例示するように、本形態の乱数生成装置3は、バイナリ乱数生成部11、記憶部12、カウンタ13、論理和演算部14、乱数取得部15、論理積演算部16、制御部37、および出力部18を有する。乱数生成装置3は、例えば、上述したコンピュータに所定のプログラムが読み込まれることで構成されてもよいし、少なくとも一部の要素がハードウェアのみによって構成されてもよい。
<処理>
ステップS11〜S173の処理は第1または2実施形態と同じである。本形態では、ステップS173の処理の後、制御部37がi=2j−1であるか否かを判定する(ステップS374)。i=2j−1でない場合にはステップS14の処理に戻る。一方、i=2j−1である場合には、M:=Mi−1としてステップS12の処理に戻る。その他は第1または2実施形態と同じである。
<本形態の特徴>
i=2j−1であるか否かの判定のための演算コストがM:=Mi−1 OR Bの演算コストよりも小さい環境では、第1実施形態よりも処理を高速化できる場合もある。また、第2実施形態と第3実施形態とを組み合わせる場合、ステップS275でi=2j−1−1と判定された場合には、ステップS374で必ずi=2j−1となる。そのため、ステップS275でi=2j−1−1と判定され、ステップS172でi=n−1でないと判定された場合には、ステップS374の判定処理を行うことなく、M:=Mi−1としてステップS12の処理に戻ってもよい。
[その他の変形例等]
なお、本発明は上述の実施の形態に限定されるものではない。例えば、上記の処理はj=floor(1+log i)の場合に最も効率がよいが、jがiに対して広義単調増加の関係にあれば、従来よりも高速に0以上i以下の乱数を生成できる。また、各iについてステップS16の処理を実行するのではなく、一部のiのみについてステップS16が実行されてもよい。例えば、iが素数のときのみにステップS16を実行することで素体上の乱数を高速に生成できる。特に、iがメルセンヌ素数のときのみにステップS16を実行すれば、ステップS171の大小判定を行うことなく、素体上の乱数を高速に生成できる。また、ステップS173ではiを1ずつ増加させたが、下位j桁の要素がすべて1であって残りの桁の要素がすべて0であるベクトルMが得られるのであれば、iを1ずつ増加させなくてもよい。例えば、i=2j−1を満たすようにiを増加させてもよい。その他、上記の処理が並列処理によって実行されてもよい。
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体の例は、非一時的な(non-transitory)記録媒体である。このような記録媒体の例は、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等である。
このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。処理の実行時、このコンピュータは、自己の記録装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。
上記実施形態では、コンピュータ上で所定のプログラムを実行させて本装置の処理機能が実現されたが、これらの処理機能の少なくとも一部がハードウェアで実現されてもよい。
本発明は、例えば、秘密分散、秘密計算、公開鍵暗号、共通鍵暗号、電子署名等の各種の暗号技術に利用でき、特にn−ランダム置換に利用できる。
1〜3 乱数生成装置

Claims (10)

  1. 2進数で表現された乱数の各桁の値を要素に含む第1列を得る乱数取得部と、
    前記第1列と、正の整数iに対して広義単調増加の関係にある個数の下位j桁の要素が1であって残りの桁の要素が0である2進数で表現された第2列と、の要素単位の論理積演算結果である第3列を得る論理積演算部と、
    前記第3列によって表される値がiよりも大きい場合に、前記乱数取得部および前記論理積演算部の処理を再び実行させ、前記第3列によって表される値がi以下の場合に、iを増加させてから前記乱数取得部および前記論理積演算部の処理を実行させる制御部と、
    を有し、
    前記制御部は、前記第3列によって表される値がi以下の場合にiの値を増加させ、2進数で表現されたiの各桁の値を要素とする第4列と前記第2列との要素単位の論理和演算結果を新たな前記第2列とし、前記乱数取得部および前記論理積演算部の処理を実行させる、乱数生成装置。
  2. 請求項1の乱数生成装置であって、
    前記制御部は、前記第3列によって表される値がi以下の場合にiの値を1増加させ、iの値を1増加させるたびに、2進数で表現されたiの各桁の値を要素とする第4列と前記第2列との要素単位の論理和演算結果を新たな前記第2列とし、前記乱数取得部および前記論理積演算部の処理を実行させる、乱数生成装置。
  3. 2進数で表現された乱数の各桁の値を要素に含む第1列を得る乱数取得部と、
    前記第1列と、正の整数iに対して広義単調増加の関係にある個数の下位j桁の要素が1であって残りの桁の要素が0である2進数で表現された第2列と、の要素単位の論理積演算結果である第3列を得る論理積演算部と、
    前記第3列によって表される値がiよりも大きい場合に、前記乱数取得部および前記論理積演算部の処理を再び実行させ、前記第3列によって表される値がi以下の場合に、iを増加させてから前記乱数取得部および前記論理積演算部の処理を実行させる制御部と、
    を有し、
    前記制御部は、前記第3列によって表される値がi以下の場合にiの値を1増加させ、iの値を1増加させるたびに、2進数で表現されたiの各桁の値を要素とする第4列と前記第2列との要素単位の論理和演算結果を新たな前記第2列とし、前記乱数取得部および前記論理積演算部の処理を実行させる、乱数生成装置。
  4. 請求項1から3の何れかの乱数生成装置であって、
    jは1+logi以下の最大の整数であ
    前記制御部は、iがメルセンヌ数であると判定した場合にiを増加させて前記乱数取得部および前記論理積演算部の処理を実行させる、乱数生成装置。
  5. 2進数で表現された乱数の各桁の値を要素に含む第1列を得る乱数取得部と、
    前記第1列と、正の整数iに対して広義単調増加の関係にある個数の下位j桁の要素が1であって残りの桁の要素が0である2進数で表現された第2列と、の要素単位の論理積演算結果である第3列を得る論理積演算部と、
    前記第3列によって表される値がiよりも大きい場合に、前記乱数取得部および前記論理積演算部の処理を再び実行させ、前記第3列によって表される値がi以下の場合に、iを増加させてから前記乱数取得部および前記論理積演算部の処理を実行させる制御部と、
    を有し、
    jは1+log i以下の最大の整数であり、
    前記制御部は、iがメルセンヌ数であると判定した場合にiを増加させて前記乱数取得部および前記論理積演算部の処理を実行させる、乱数生成装置。
  6. 請求項1から5の何れかの乱数生成装置であって、
    nは2以上の整数であり、
    前記制御部は、1≦i<nの各iについて前記乱数取得部および前記論理積演算部の処理を実行させる、乱数生成装置。
  7. 乱数取得部が、2進数で表現された乱数の各桁の値を要素に含む第1列を得る乱数取得ステップと、
    論理積演算部が、前記第1列と、正の整数iに対して広義単調増加の関係にある個数の下位j桁の要素が1であって残りの桁の要素が0である2進数で表現された第2列と、の要素単位の論理積演算結果である第3列を得る論理積演算ステップと
    前記第3列によって表される値がiよりも大きい場合に、前記乱数取得ステップおよび前記論理積演算ステップの処理を再び実行させ、前記第3列によって表される値がi以下の場合に、iを増加させてから前記乱数取得ステップおよび前記論理積演算ステップの処理を実行させる制御ステップとを有し、
    前記制御ステップは、前記第3列によって表される値がi以下の場合にiの値を増加させ、2進数で表現されたiの各桁の値を要素とする第4列と前記第2列との要素単位の論理和演算結果を新たな前記第2列とし、前記乱数取得ステップおよび前記論理積演算ステップの処理を実行させる、乱数生成方法。
  8. 乱数取得部が、2進数で表現された乱数の各桁の値を要素に含む第1列を得る乱数取得ステップと、
    論理積演算部が、前記第1列と、正の整数iに対して広義単調増加の関係にある個数の下位j桁の要素が1であって残りの桁の要素が0である2進数で表現された第2列と、の要素単位の論理積演算結果である第3列を得る論理積演算ステップと、
    前記第3列によって表される値がiよりも大きい場合に、前記乱数取得ステップおよび前記論理積演算ステップの処理を再び実行させ、前記第3列によって表される値がi以下の場合に、iを増加させてから前記乱数取得ステップおよび前記論理積演算ステップの処理を実行させる制御ステップと、
    を有し、
    前記制御ステップは、前記第3列によって表される値がi以下の場合にiの値を1増加させ、iの値を1増加させるたびに、2進数で表現されたiの各桁の値を要素とする第4列と前記第2列との要素単位の論理和演算結果を新たな前記第2列とし、前記乱数取得ステップおよび前記論理積演算ステップの処理を実行させる、乱数生成方法。
  9. 乱数取得部が、2進数で表現された乱数の各桁の値を要素に含む第1列を得る乱数取得ステップと、
    論理積演算部が、前記第1列と、正の整数iに対して広義単調増加の関係にある個数の下位j桁の要素が1であって残りの桁の要素が0である2進数で表現された第2列と、の要素単位の論理積演算結果である第3列を得る論理積演算ステップと、
    前記第3列によって表される値がiよりも大きい場合に、前記乱数取得ステップおよび前記論理積演算ステップの処理を再び実行させ、前記第3列によって表される値がi以下の場合に、iを増加させてから前記乱数取得ステップおよび前記論理積演算ステップの処理を実行させる制御ステップと、
    を有し、
    jは1+log i以下の最大の整数であり、
    前記制御ステップは、iがメルセンヌ数であると判定した場合にiを増加させて前記乱数取得ステップとおよび前記論理積演算ステップとの処理を実行させる、乱数生成方法。
  10. 請求項1から6の何れかの乱数生成装置としてコンピュータを機能させるためのプログラム。
JP2015014913A 2015-01-29 2015-01-29 乱数生成装置、乱数生成方法、およびプログラム Active JP5875719B1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015014913A JP5875719B1 (ja) 2015-01-29 2015-01-29 乱数生成装置、乱数生成方法、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015014913A JP5875719B1 (ja) 2015-01-29 2015-01-29 乱数生成装置、乱数生成方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP5875719B1 true JP5875719B1 (ja) 2016-03-02
JP2016139348A JP2016139348A (ja) 2016-08-04

Family

ID=55434699

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015014913A Active JP5875719B1 (ja) 2015-01-29 2015-01-29 乱数生成装置、乱数生成方法、およびプログラム

Country Status (1)

Country Link
JP (1) JP5875719B1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4235400B1 (en) * 2020-01-28 2024-07-24 Quside Technologies S.L. Computer-implemented method for deciding whether a random number is larger or smaller than a given threshold

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06214956A (ja) * 1993-01-20 1994-08-05 Casio Comput Co Ltd 乱数発生装置
JPH07193565A (ja) * 1993-12-27 1995-07-28 Canon Inc 疑似乱数を用いた通信方法とその装置
JPH11109859A (ja) * 1997-10-06 1999-04-23 Nec Corp 擬似乱数発生方法および装置
JP2007179280A (ja) * 2005-12-27 2007-07-12 Toshiba Information Systems (Japan) Corp 乱数生成装置及び乱数生成方法
JP2014216005A (ja) * 2013-04-29 2014-11-17 韓國電子通信研究院Electronics and Telecommunications ResearchInstitute 2進乱数列を整数乱数に変換する装置および方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06214956A (ja) * 1993-01-20 1994-08-05 Casio Comput Co Ltd 乱数発生装置
JPH07193565A (ja) * 1993-12-27 1995-07-28 Canon Inc 疑似乱数を用いた通信方法とその装置
JPH11109859A (ja) * 1997-10-06 1999-04-23 Nec Corp 擬似乱数発生方法および装置
JP2007179280A (ja) * 2005-12-27 2007-07-12 Toshiba Information Systems (Japan) Corp 乱数生成装置及び乱数生成方法
JP2014216005A (ja) * 2013-04-29 2014-11-17 韓國電子通信研究院Electronics and Telecommunications ResearchInstitute 2進乱数列を整数乱数に変換する装置および方法

Also Published As

Publication number Publication date
JP2016139348A (ja) 2016-08-04

Similar Documents

Publication Publication Date Title
US11159305B2 (en) Homomorphic data decryption method and apparatus for implementing privacy protection
CN107735830B (zh) 秘密计算装置、秘密计算方法和记录介质
JP5957120B1 (ja) 秘密分散方法、秘密分散システム、分散装置、およびプログラム
WO2019208484A1 (ja) 秘密集約総和システム、秘密計算装置、秘密集約総和方法、およびプログラム
CN112805769B (zh) 秘密s型函数计算系统、装置、方法及记录介质
WO2019208485A1 (ja) 秘密集約最大値システム、秘密集約最小値システム、秘密計算装置、秘密集約最大値方法、秘密集約最小値方法、およびプログラム
JP2019145925A (ja) ブロックチェーン・ネットワークにおいてトランザクションを検証するための方法及び当該ネットワークを構成するためのノード
JP6044738B2 (ja) 情報処理装置、プログラム及び記憶媒体
US20240345916A1 (en) Generating a target data based on a function associated with a physical variation of a device
WO2019203262A1 (ja) 秘密集約順位システム、秘密計算装置、秘密集約順位方法、およびプログラム
WO2019208486A1 (ja) 秘密集約中央値システム、秘密計算装置、秘密集約中央値方法、およびプログラム
JP5875719B1 (ja) 乱数生成装置、乱数生成方法、およびプログラム
US10001972B2 (en) Random IP generation method and apparatus
CN106796765B (zh) 非减序列判定装置、非减序列判定方法以及记录介质
JP5875717B1 (ja) 乱数生成装置、乱数生成方法、およびプログラム
US9182943B2 (en) Methods and devices for prime number generation
JPWO2018008547A1 (ja) 秘密計算システム、秘密計算装置、秘密計算方法、およびプログラム
JP7511525B2 (ja) 内積計算装置、内積計算方法、および、内積計算プログラム
US20240187210A1 (en) Encryption processing apparatus and encryption processing method
CN117857004A (zh) 具有同态加密操作的装置和方法
JP6023852B1 (ja) 検知機能付加装置、検知装置、およびプログラム
JP6093718B2 (ja) 拡大体乗算装置、拡大体乗算方法及びプログラム
CN115840953A (zh) 一种身份认证方法、装置、终端及可读存储介质
CN117033707A (zh) 设备排序方法、装置、计算机设备和存储介质
JP2002311828A (ja) ビットスライス条件つき処理装置、そのプログラム及びその記録媒体

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151216

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160112

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160119

R150 Certificate of patent or registration of utility model

Ref document number: 5875719

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150