本發(fā)明涉及隨機(jī)數(shù)生成技術(shù),特別涉及生成屬于規(guī)定的集合的隨機(jī)數(shù)的技術(shù)。
背景技術(shù):
存在生成n個(gè)隨機(jī)比特,對(duì)與將該n個(gè)隨機(jī)比特設(shè)為各位的值的二進(jìn)制數(shù)表示值對(duì)應(yīng)的十進(jìn)制數(shù)表示值a和p-1進(jìn)行大小判定,若a>p-1則重新進(jìn)行處理,否則采用a作為隨機(jī)數(shù)的隨機(jī)數(shù)生成方法(例如參照非專利文獻(xiàn)1)。若將p設(shè)為素?cái)?shù),則可以生成素域上的隨機(jī)數(shù)。
[現(xiàn)有技術(shù)文獻(xiàn)]
[非專利文獻(xiàn)]
[非專利文獻(xiàn)1]:ヨハネスブーフマン、「暗號(hào)理論入門―暗號(hào)アルゴリズム、署名と認(rèn)証、その數(shù)學(xué)的基礎(chǔ)」、シュプリンガー·フェアラーク東京、2001年7月、p114.
技術(shù)實(shí)現(xiàn)要素:
發(fā)明要解決的課題
在上述的方法中,在對(duì)于n以二進(jìn)制數(shù)表示p時(shí)的要素?cái)?shù)小時(shí),隨機(jī)數(shù)的生成概率極度下降,導(dǎo)致隨機(jī)數(shù)的生成速度下降。
本發(fā)明的課題在于,高速地生成屬于規(guī)定的集合的隨機(jī)數(shù)。
用于解決課題的方案
得到將以二進(jìn)制數(shù)表示的隨機(jī)數(shù)的各位的值包含于要素的第一列,得到該第一列和將以二進(jìn)制數(shù)表示的單個(gè)或者多個(gè)梅森數(shù)的各位的值以及零值包含于要素的第二列之間的要素單位的邏輯與運(yùn)算結(jié)果、即第三列。
發(fā)明效果
由此,能夠高速地生成屬于規(guī)定的集合的隨機(jī)數(shù)。
附圖說明
圖1是例示了實(shí)施方式的隨機(jī)數(shù)生成裝置的功能結(jié)構(gòu)的框圖。
圖2a是例示了實(shí)施方式的隨機(jī)數(shù)生成方法的流程圖。圖2b是例示了等號(hào)判定處理的流程圖。
圖3a~圖3c是例示了實(shí)施方式的第一~三列的圖。
具體實(shí)施方式
以下,說明本發(fā)明的實(shí)施方式。
[概要]
在實(shí)施方式中,如以下那樣生成屬于規(guī)定的集合的隨機(jī)數(shù)。首先,得到將以二進(jìn)制數(shù)表示的隨機(jī)數(shù)(二進(jìn)制隨機(jī)數(shù))的各位的值包含于要素的“第一列”(隨機(jī)數(shù)獲取步驟)。該隨機(jī)數(shù)可以是均勻隨機(jī)數(shù),也可以不是均勻隨機(jī)數(shù)。再者,“隨機(jī)數(shù)”的概念包含真隨機(jī)數(shù)及偽隨機(jī)數(shù)。隨機(jī)數(shù)可以預(yù)先生成,也可以在得到“第一列”時(shí)生成?!暗谝涣小笨梢詢H將以二進(jìn)制數(shù)表示的隨機(jī)數(shù)的各位的值作為要素,也可以進(jìn)一步包含除此以外的要素。接著,得到“第一列”和“第二列”的要素單位的邏輯與運(yùn)算結(jié)果(各要素的與(and)運(yùn)算結(jié)果,例如比特與運(yùn)算結(jié)果)、即“第三列”(邏輯與運(yùn)算步驟)。其中,“第二列”是將以二進(jìn)制數(shù)表示的單個(gè)或者多個(gè)梅森數(shù)pi(其中,i=0、…、n-1,n是1以上的整數(shù))的各位的值以及零值包含于要素的列?!暗诙小钡囊?cái)?shù)例如與“第一列”的要素?cái)?shù)相同。“第二列”可以僅將梅森數(shù)pi的各位的值以及零值作為要素,也可以進(jìn)一步包含除此以外的要素(例如固定值、屬性信息等)。梅森數(shù)pi是滿足2n(i)-1的整數(shù),以二進(jìn)制數(shù)表示的梅森數(shù)pi是由n(i)個(gè)1構(gòu)成的列1…1。其中,n(i)是特定的正整數(shù)。pi的一個(gè)例子是梅森素?cái)?shù),例如在n(i)=2、3、5、7、13、17、19、31、61等時(shí)pi成為梅森素?cái)?shù)?!暗谌小笔怯谩暗诙小睂?duì)“第一列”進(jìn)行掩蓋后的列,是包含以二進(jìn)制數(shù)表示的位數(shù)為n(i)的隨機(jī)數(shù)ti的列。這樣的隨機(jī)數(shù)ti能夠處理為以梅森數(shù)pi為模的剩余環(huán)(剩余類)上的隨機(jī)數(shù)。特別地,若pi是梅森素?cái)?shù),則隨機(jī)數(shù)ti能夠處理為以梅森素?cái)?shù)pi為模的剩余域(素域)上的隨機(jī)數(shù)。在以pi為模的剩余環(huán)上,pi=2n(i)-1和0是相同的值(2n(i)-1mod(2n(i)-1)=0),“第三列”所包含的n個(gè)隨機(jī)數(shù)ti(其中,i=0、…、n-1)“必定”可以處理為以pi為模的剩余環(huán)上的隨機(jī)數(shù)。因此,與隨機(jī)數(shù)的生成概率因環(huán)境而下降的現(xiàn)有技術(shù)相比,能夠高速地生成剩余環(huán)上的隨機(jī)數(shù)。
但是,在以pi為模的剩余環(huán)中pi和0被處理為相同的值(0是pi的等價(jià)類),所以隨機(jī)數(shù)ti不限于成為均勻隨機(jī)數(shù)。即,在“第一列”所表示的隨機(jī)數(shù)是均勻隨機(jī)數(shù)的情況下,ti成為0、1、…、pi的概率分別為1/2n(i),ti成為pi或者0的概率為1/2n(i)-1。因此,在上述剩余環(huán)上,0的生成概率(換言之,pi的生成概率)為1/2n(i)-1,其他隨機(jī)數(shù)的生成概率為1/2n(i)。為了得到剩余環(huán)上的均勻隨機(jī)數(shù),在成為了ti=pi的情況下,廢棄所生成的隨機(jī)數(shù),并重新進(jìn)行隨機(jī)數(shù)獲取步驟及邏輯與運(yùn)算步驟即可。換言之,“第一列”包含“第一子列”,“第二列”所包含的“第二子列”表示任意的梅森數(shù)pi,“第三列”包含“第一子列”和“第二子列”的要素單位的邏輯與運(yùn)算結(jié)果、即“第三子列”,在“第二子列”和“第三子列”一致的情況下再次執(zhí)行隨機(jī)數(shù)獲取步驟及邏輯與運(yùn)算步驟的處理即可。在上述結(jié)構(gòu)中,成為ti=pi的概率(“第二子列”和“第三子列”一致的概率)也是1/2n(i)-1左右,能夠高速地生成剩余環(huán)上的均勻隨機(jī)數(shù)。
或者,也可以在成為ti=0的情況下重新進(jìn)行隨機(jī)數(shù)獲取步驟及邏輯與運(yùn)算步驟。換言之,也可以在“第三子列”的要素由零構(gòu)成的情況(“第三子列”為零向量的情況)下再次執(zhí)行隨機(jī)數(shù)獲取步驟及邏輯與運(yùn)算步驟的處理。由此,也能夠高速地生成剩余環(huán)上的均勻隨機(jī)數(shù)。
此外,在將n設(shè)為2以上的整數(shù)、將“第二列”設(shè)為將以二進(jìn)制數(shù)表示的多個(gè)梅森數(shù)pi的各位的值以及零值包含于要素的列的情況下,能夠通過并行處理來生成多個(gè)剩余環(huán)上的隨機(jī)數(shù),能夠更高速地生成隨機(jī)數(shù)。以二進(jìn)制數(shù)表示的梅森數(shù)pi的位數(shù)(比特長度)n(i)可以彼此相同,也可以不相同。
在通過這樣的并行處理來生成剩余環(huán)上的均勻隨機(jī)數(shù)的情況下,也可以是,(1)通過集中等號(hào)判定,對(duì)i=0、…、n-1集中地進(jìn)行是否成為ti=pi的判定,(2)通過這些等號(hào)判定結(jié)果xi(其中,i=0、…、n-1)的或運(yùn)算或者與運(yùn)算,對(duì)任意的i得到表示是否成為ti=pi的聚合判定結(jié)果x,(3)在聚合判定結(jié)果x對(duì)任意的i表示成為ti=pi的情況下重新進(jìn)行隨機(jī)數(shù)獲取步驟及邏輯與運(yùn)算步驟。換言之,也可以是,(1)通過集中等號(hào)判定來得到表示多個(gè)“第二子列”中的每個(gè)和多個(gè)“第三子列”中的每個(gè)是否一致的多個(gè)等號(hào)判定結(jié)果xi(其中,i=0、…、n-1)的每一個(gè),(2)通過多個(gè)等號(hào)判定結(jié)果xi的或運(yùn)算或者與運(yùn)算來得到表示任意的“第二子列”和“第三子列”是否一致的聚合判定結(jié)果x,(3)在聚合判定結(jié)果x表示任意的“第二子列”和“第三子列”一致的情況下,再次執(zhí)行隨機(jī)數(shù)獲取步驟及邏輯與運(yùn)算步驟的處理。其中,“第一列”包含多個(gè)“第一子列”,“第二列”所包含的多個(gè)“第二子列”的每一個(gè)表示多個(gè)梅森數(shù)pi的各位的值,“第三列”包含多個(gè)“第三子列”,多個(gè)“第三子列”的每個(gè)是多個(gè)“第一子列”中的每個(gè)和多個(gè)“第二子列”中的每個(gè)的要素單位的邏輯與運(yùn)算結(jié)果ti。這里,集中等號(hào)判定、或運(yùn)算、與運(yùn)算的運(yùn)算量較小。此外,如上述,成為ti=pi的概率是1/2n(i)-1左右,對(duì)任意的i,成為ti=pi的可能性小。因此,能夠更高速地生成剩余環(huán)上的均勻隨機(jī)數(shù)。
或者,也可以是,(4)通過集中等號(hào)判定,對(duì)i=0、…、n-1集中地進(jìn)行是否成為ti=0的判定,(5)通過這些等號(hào)判定結(jié)果xi(其中,i=0、…、n-1)的或運(yùn)算或者與運(yùn)算,對(duì)任意的i得到表示是否成為ti=0的聚合判定結(jié)果x,(6)在聚合判定結(jié)果x對(duì)任意的i表示成為ti=0的情況下重新進(jìn)行隨機(jī)數(shù)獲取步驟及邏輯與運(yùn)算步驟。換言之,也可以是,(4)通過集中等號(hào)判定來得到表示多個(gè)“第三子列”的每個(gè)的要素是否由零構(gòu)成的多個(gè)等號(hào)判定結(jié)果xi(其中,i=0、…、n-1)的每一個(gè),(5)通過多個(gè)等號(hào)判定結(jié)果xi的或運(yùn)算或者與運(yùn)算來得到表示任意的“第三子列”的要素是否由零構(gòu)成的聚合判定結(jié)果x,(6)在聚合判定結(jié)果x表示任意的“第三子列”的要素由零構(gòu)成的情況下,再次執(zhí)行隨機(jī)數(shù)獲取步驟及邏輯與運(yùn)算步驟的處理。在該情況下,也能夠高速地生成剩余環(huán)上的均勻隨機(jī)數(shù)。
[第一實(shí)施方式]
接著,說明第一實(shí)施方式。在本方式中,說明pi為梅森素?cái)?shù)的情況。
<結(jié)構(gòu)>
如圖1所例示的,本方式的隨機(jī)數(shù)生成裝置1具有二進(jìn)制隨機(jī)數(shù)生成單元11、存儲(chǔ)單元12、輸入單元13、掩碼生成單元14、隨機(jī)數(shù)獲取單元15、邏輯與運(yùn)算單元16、以及輸出單元18。隨機(jī)數(shù)生成裝置1例如是通過由包括cpu(centralprocessingunit,中央處理單元)等的處理器(硬件/處理器)、ram(random-accessmemory,隨機(jī)存取存儲(chǔ)器)/rom(read-onlymemory,只讀存儲(chǔ)器)等的存儲(chǔ)器等的通用或者專用的計(jì)算機(jī)執(zhí)行規(guī)定的程序而構(gòu)成的裝置。該計(jì)算機(jī)可以包括1個(gè)處理器、存儲(chǔ)器,也可以包括多個(gè)處理器、存儲(chǔ)器。該程序可以安裝于計(jì)算機(jī),也可以預(yù)先記錄于rom等。此外,也可以不利用如cpu那樣通過讀入程序而實(shí)現(xiàn)功能結(jié)構(gòu)的電路(circuitry),而利用不用程序就實(shí)現(xiàn)處理功能的電路來構(gòu)成一部分或者全部的處理單元。此外,構(gòu)成1個(gè)裝置的電路也可以包含多個(gè)cpu。
<處理>
在本方式中,將“第一列”、“第二列”、“第三列”處理為分別由l個(gè)要素構(gòu)成的向量,假設(shè)隨機(jī)數(shù)生成裝置1是以l比特精度進(jìn)行運(yùn)算的隨機(jī)數(shù)生成裝置。此外,l是比以二進(jìn)制數(shù)表示的梅森素?cái)?shù)p0、…、pn-1的合計(jì)要素?cái)?shù)n(0)+…+n(n-1)更大的正整數(shù)。l可以是常數(shù),也可以根據(jù)被輸入的梅森素?cái)?shù)p0、…、pn-1來確定。在所假定的梅森素?cái)?shù)p0、…、pn-1的大小被預(yù)先確定的情況下,能夠?qū)設(shè)為常數(shù)。
如圖2a所例示的,首先,對(duì)梅森素?cái)?shù)p0、…、pn-1進(jìn)行確定的信息被輸入到輸入單元13。該信息的例子是梅森素?cái)?shù)p0、…、pn-1本身或n(0)、…、n(n-1)等。對(duì)梅森素?cái)?shù)p0、…、pn-1進(jìn)行確定的信息被發(fā)送到掩碼生成單元14(步驟s13)。
掩碼生成單元14得到由l個(gè)要素構(gòu)成的向量m∈{0,1}l(第二列),并輸出,其中,該l個(gè)要素將以二進(jìn)制數(shù)表示的梅森素?cái)?shù)p0、…、pn-1的各位的值以及零值包含于要素。在圖3a~3c中示出向量m的具體例。圖3a的例子是n(0)=…=n(n-1)=7的例子。就該例的向量m而言,起始的z個(gè)(其中,z=l-(n(0)+…+n(n-1)))的要素為零,其余的要素全部為1。換言之,在由起始的z個(gè)0構(gòu)成的子列zero之后,配置有以二進(jìn)制數(shù)表示的梅森素?cái)?shù)pn-1、…、p0。圖3b的例子也是n(0)=…=n(n-1)=7的例子。但是,在該例中,在1個(gè)0的要素zero之后配置有以二進(jìn)制數(shù)表示的1個(gè)梅森素?cái)?shù)pi(其中,i=n-1、…、0),交替地配置有0和以二進(jìn)制數(shù)表示的梅森素?cái)?shù)pi。在圖3c中,在由起始的z個(gè)0構(gòu)成的子列zero之后,配置有由二進(jìn)制數(shù)表示的梅森素?cái)?shù)pn-1、…、p0。但是,梅森素?cái)?shù)pn-1、…、p0并不全都相同。此外,在圖3b的例子中,梅森素?cái)?shù)pn-1、…、p0也可以不全都相同。所生成的向量m被發(fā)送到邏輯與運(yùn)算單元16(步驟s14)。
隨機(jī)數(shù)獲取單元15判定存儲(chǔ)單元12中是否殘留有由l個(gè)要素構(gòu)成的l比特的二進(jìn)制隨機(jī)數(shù)向量r∈{0,1}l(第一列)(步驟s12)。在殘留有二進(jìn)制隨機(jī)數(shù)向量r的情況下,隨機(jī)數(shù)獲取單元15從存儲(chǔ)單元12讀出二進(jìn)制隨機(jī)數(shù)向量r,并輸出(步驟s15)。被讀出的二進(jìn)制隨機(jī)數(shù)向量r被從存儲(chǔ)單元12中刪除。另一方面,在未殘留二進(jìn)制隨機(jī)數(shù)向量r的情況下,二進(jìn)制隨機(jī)數(shù)生成單元11生成l比特的二進(jìn)制隨機(jī)數(shù)向量r∈{0,1}l,存儲(chǔ)到存儲(chǔ)單元12中,隨機(jī)數(shù)獲取單元15從存儲(chǔ)單元12讀出二進(jìn)制隨機(jī)數(shù)向量r,并輸出(步驟s15)。再者,為了處理的高速化,期望二進(jìn)制隨機(jī)數(shù)生成單元11通過并行處理來生成多個(gè)二進(jìn)制隨機(jī)數(shù)向量r,存儲(chǔ)到存儲(chǔ)單元12中。所輸出的二進(jìn)制隨機(jī)數(shù)向量r被發(fā)送到邏輯與運(yùn)算單元16。
邏輯與運(yùn)算單元16進(jìn)行二進(jìn)制隨機(jī)數(shù)向量r和向量m的要素單位的邏輯與運(yùn)算(比特與運(yùn)算),得到其運(yùn)算結(jié)果、即向量t∈{0,1}l(第三列),并輸出。在向量m的第j要素(其中,j=0、…、l-1)為零的情況下,向量t的第j要素成為零,在向量m的第j要素為1的情況下,向量t的第j要素成為二進(jìn)制隨機(jī)數(shù)向量r的第j要素。即,向量t是用向量m對(duì)二進(jìn)制隨機(jī)數(shù)向量r進(jìn)行掩蓋得到的向量。將與向量m所包含的以二進(jìn)制數(shù)表示的梅森素?cái)?shù)pi的要素列(子列)對(duì)應(yīng)的向量t的要素列表示為子列ti。例如,在以二進(jìn)制數(shù)表示的梅森素?cái)?shù)pi是向量m的從第j1要素起至第j2要素為止的要素列的情況下,子列ti是向量t的從第j1要素起至第j2要素為止的要素列。例如,在圖3a的例子的情況下,二進(jìn)制隨機(jī)數(shù)向量r的起始的z個(gè)要素是由(rn,z-1,···,rn,0)∈{0,1}z構(gòu)成的子列rn。其中,向量m的起始的z個(gè)要素全部為零,所以向量t的起始的z個(gè)要素也全部為零。之后的向量m的要素全部為1,所以向量t的之后的子列tn-1、…、t0(其中,ti是由ti,6、···、ti,0∈{0,1}7構(gòu)成的子列)是二進(jìn)制隨機(jī)數(shù)向量r的子列rn-1、…、r0(其中,ri是由ri,6、···、ri,0∈{0,1}7構(gòu)成的子列)。例如,在圖3b的例子的情況下,二進(jìn)制隨機(jī)數(shù)向量r由子列rn-1、…、r0(其中,ri是由ri,7、···、ri,0∈{0,1}7構(gòu)成的子列)構(gòu)成。向量m具有n個(gè)由0和1111111構(gòu)成的子列01111111,所以向量t的子列tn-1、…、t0(其中,ti是由ti,6、···、ti,0∈{0,1}7構(gòu)成的子列)是二進(jìn)制隨機(jī)數(shù)向量r的子列rn-1、…、r0(其中,ri是由ri,6、···、ri,0∈{0,1}7構(gòu)成的子列)。例如,在圖3c的例子的情況下,向量m的起始的z個(gè)要素全部為零,其余的要素全部為1。因此,向量t的起始的z個(gè)要素全部為零,之后的子列tn-1、…、t0是二進(jìn)制隨機(jī)數(shù)向量r的子列rn-1、…、r0。所得到的向量t被發(fā)送到輸出單元18(步驟s16)。
輸出單元18可以將向量t直接輸出,也可以僅輸出向量t所包含的子列tn-1、…、t0。子列ti(其中,i=0、…、n-1)分別被處理為以梅森素?cái)?shù)pi為模的剩余域(素域)上的隨機(jī)數(shù)(步驟s18)。在進(jìn)一步需要素域上的隨機(jī)數(shù)的情況下,反復(fù)進(jìn)行從步驟s13至s18的處理或者s11~s18的處理即可。
<本方式的特征>
在像以往那樣通過二進(jìn)制隨機(jī)數(shù)向量r所表示的值和素?cái)?shù)p的大小判定來生成素域上的隨機(jī)數(shù)的情況下,若相對(duì)于二進(jìn)制隨機(jī)數(shù)向量r的要素?cái)?shù)l,以二進(jìn)制數(shù)表示p時(shí)的要素?cái)?shù)小,則該素域上的隨機(jī)數(shù)的生成概率極度下降,導(dǎo)致隨機(jī)數(shù)的生成速度下降。例如,在二進(jìn)制隨機(jī)數(shù)向量r表示均勻隨機(jī)數(shù),以二進(jìn)制數(shù)表示p時(shí)的要素?cái)?shù)為l-1的情況下,若p是梅森素?cái)?shù),則該素域上的隨機(jī)數(shù)的生成概率成為50%,若p是除梅森素?cái)?shù)以外的素?cái)?shù),則生成概率小于50%。在進(jìn)行并行處理的情況下,該生成概率進(jìn)一步下降。例如,在成功概率為50%左右時(shí),若試圖并行地進(jìn)行1000個(gè)素?cái)?shù)生成,則失敗概率成為99.9%左右,幾乎不會(huì)成功,性能極度下降。
與此相對(duì),在本方式中,能夠可靠地生成素域上的隨機(jī)數(shù),所以能夠高速地生成素?cái)?shù)域上的隨機(jī)數(shù)。進(jìn)一步,即使并行地集中進(jìn)行每個(gè)要素的邏輯與運(yùn)算(n≥2)來進(jìn)行隨機(jī)數(shù)生成,成功概率也不會(huì)下降,所以能夠通過這樣的并行處理來更高速地生成素域上的隨機(jī)數(shù)。此外,許多計(jì)算機(jī)能夠并行地高速地處理比特與運(yùn)算(每個(gè)要素的邏輯與運(yùn)算),能夠高效地實(shí)現(xiàn)本方式的方法。進(jìn)一步,能夠由l比特的寄存器來執(zhí)行本方式的比特與運(yùn)算,與以往那樣進(jìn)行大小比較的情況相比能夠削減存儲(chǔ)容量。
[第二實(shí)施方式]
本方式中生成素域上的均勻隨機(jī)數(shù)。以下,以與到此為止說明過的事項(xiàng)的不同點(diǎn)為中心進(jìn)行說明,對(duì)已經(jīng)說明過的事項(xiàng),引用與之相同的參照編號(hào)而省略說明。
<結(jié)構(gòu)>
如圖1所例示的,本方式的隨機(jī)數(shù)生成裝置2具有二進(jìn)制隨機(jī)數(shù)生成單元11、存儲(chǔ)單元12、輸入單元13、掩碼生成單元14、隨機(jī)數(shù)獲取單元15、邏輯與運(yùn)算單元16、判定單元27、以及輸出單元18。隨機(jī)數(shù)生成裝置2例如可以通過將規(guī)定的程序讀入上述的計(jì)算機(jī)來構(gòu)成,也可以僅由硬件來構(gòu)成至少一部分的要素。
<處理>
步驟s11~s16的處理與第一實(shí)施方式相同。但是,在第二實(shí)施方式中,輸入到輸入單元13的梅森素?cái)?shù)pi以及在步驟s16中得到的向量t被輸入到判定單元27。判定單元27判定向量t所包含的任意的子列ti和梅森素?cái)?shù)pi(其中,i=0、…、n-1)是否一致(等號(hào)判定)(步驟s27)。在對(duì)任意的i=0、…、n-1,ti=pi的情況下,判定單元27廢棄向量t(t不合格),將處理返回到步驟s12。另一方面,在對(duì)全部的i=0、…、n-1,ti≠pi的情況下,向量t被發(fā)送到輸出單元18(t合格)。以后與第一實(shí)施方式相同。
再者,步驟s27的等號(hào)判定也可以對(duì)每個(gè)i獨(dú)立地進(jìn)行,但是也可以如圖2b所例示的那樣集中處理。在圖2b的例子中,判定單元27的集中等號(hào)判定單元對(duì)全部的i=0、…、n-1集中地進(jìn)行是否ti=pi的等號(hào)判定(集中等號(hào)判定),得到等號(hào)判定結(jié)果xi的列。其中,在ti=pi的情況下xi=2k-1,在ti≠pi的情況下xi=0。再者,k為正整數(shù),滿足0<k×n≤l(步驟s271)。接著,判定單元27的聚合運(yùn)算單元進(jìn)行等號(hào)判定結(jié)果xi(其中,i=0、…、n-1)的聚合或運(yùn)算(or運(yùn)算),得到其運(yùn)算結(jié)果、即聚合判定結(jié)果x。其中,在任意的等號(hào)判定結(jié)果xi(其中,i=0、…、n-1)為2k-1的情況(非0的情況)下x=2k’-1,在全部的等號(hào)判定結(jié)果xi(其中,i=0、…、n-1)為0的情況下x=0。再者,k’為正整數(shù),滿足0<k’≤l??梢允莐=k’,也可以是k≠k’(步驟s272)。然后,判定單元27的聚合判定單元判定是否x=0(步驟s273)。這里,若x=2k-1則聚合判定單元廢棄向量t(t不合格)(步驟s274),將處理返回到步驟s12。另一方面,若x=0則聚合判定單元將向量t發(fā)送到輸出單元18(t合格)(步驟s275)。
另外,也可以是,集中等號(hào)判定單元在ti=pi的情況下設(shè)為xi=0,在ti≠pi的情況下設(shè)為xi=2k-1,聚合運(yùn)算單元進(jìn)行xi(其中,i=0、…、n-1)的聚合與運(yùn)算(and運(yùn)算),得到其運(yùn)算結(jié)果、即聚合判定結(jié)果x。其中,在任意的等號(hào)判定結(jié)果xi(其中,i=0、…、n-1)為0的情況下x=0,在全部的等號(hào)判定結(jié)果xi(其中,i=0、…、n-1)為2k-1的情況下x=2k’-1。在該情況下,若x=0則聚合判定單元廢棄向量t(t不合格),將處理返回到步驟s12。另一方面,若x=2k-1則聚合判定單元將向量t發(fā)送到輸出單元18(t合格)。
<本方式的特征>
如前述,若二進(jìn)制隨機(jī)數(shù)向量r表示均勻隨機(jī)數(shù),則子列ti分別成為以梅森素?cái)?shù)pi為模的剩余域(素域)上的均勻隨機(jī)數(shù)。成為ti=pi的概率是1/2n(i)-1左右,不論l的大小如何,成功概率均高。本方式也大致可靠地成功地生成隨機(jī)數(shù),所以即使并行地集中進(jìn)行子列ti(其中,i=0、…、n-1)的等號(hào)判定,成功概率也幾乎不會(huì)下降,在步驟s27中成為不合格的概率低。例如,在p=261-1(即n(i)=61)時(shí),1000個(gè)并行的集中生成失敗的概率為1/251,充分低,重新進(jìn)行的開銷(overhead)極小。因此,若如上述那樣集中處理步驟s27的等號(hào)判定,則能夠更高速地得到素域上的均勻隨機(jī)數(shù)。即,上述的集中等號(hào)判定、聚合或運(yùn)算(或者聚合與運(yùn)算)的運(yùn)算成本低。例如在l=256的情況下,許多計(jì)算機(jī)能夠用1個(gè)時(shí)鐘來處理這些處理。此外,當(dāng)前的許多計(jì)算機(jī)具有分支預(yù)測功能,在進(jìn)行分支計(jì)算前,實(shí)績多的計(jì)算機(jī)的分支先開始處理,所以若重新進(jìn)行的概率低,則條件分支實(shí)際上成為0時(shí)鐘。此外,掩碼即向量m∈{0,1}l所包含的梅森素?cái)?shù)p0、…、pn-1與等號(hào)判定基準(zhǔn)一致,所以可以將為了掩碼處理而預(yù)先存儲(chǔ)了向量m的寄存器還用于等號(hào)判定處理,能夠用少的寄存器來實(shí)現(xiàn)這些處理。此外,等號(hào)判定與現(xiàn)有方式所使用的大小比較相比還具有效率高的優(yōu)點(diǎn)(對(duì)比特?cái)?shù)n,大小比較為電路規(guī)模o(n)/深度o(n)或者電路規(guī)模o(nlogn)/深度o(logn),與此相對(duì),等號(hào)判定為電路規(guī)模o(n)/深度o(logn))。
[第三實(shí)施方式]
本方式也生成素域上的均勻隨機(jī)數(shù)。以下,以與到此為止說明過的事項(xiàng)的不同點(diǎn)為中心進(jìn)行說明,對(duì)已經(jīng)說明過的事項(xiàng),引用與之相同的參照編號(hào)而省略說明。
<結(jié)構(gòu)>
如圖1所例示的,本方式的隨機(jī)數(shù)生成裝置3具有二進(jìn)制隨機(jī)數(shù)生成單元11、存儲(chǔ)單元12、輸入單元13、掩碼生成單元14、隨機(jī)數(shù)獲取單元15、邏輯與運(yùn)算單元16、判定單元37、以及輸出單元18。隨機(jī)數(shù)生成裝置3例如可以通過將規(guī)定的程序讀入上述的計(jì)算機(jī)來構(gòu)成,也可以僅由硬件來構(gòu)成至少一部分的要素。
<處理>
步驟s11~s16的處理與第一實(shí)施方式相同。但是,在第三實(shí)施方式中,在步驟s16中得到的向量t被輸入到判定單元37。判定單元37判定向量t所包含的任意的子列ti是否為零向量(ti=0)(步驟s37)。在對(duì)任意的i=0、…、n-1,ti=0的情況下,判定單元37廢棄向量t(t不合格),將處理返回到步驟s12。另一方面,在對(duì)全部的i=0、…、n-1,ti≠0的情況下,向量t被發(fā)送到輸出單元18(t合格)。以后與實(shí)施方式1相同。
再者,與第二實(shí)施方式同樣地,步驟s37的等號(hào)判定也可以對(duì)每個(gè)i獨(dú)立地進(jìn)行,但是也可以如圖2b所例示的那樣集中處理。在圖2b的例子中,判定單元37的集中等號(hào)判定單元對(duì)全部的i=0、…、n-1集中地進(jìn)行是否ti=0的等號(hào)判定(集中等號(hào)判定),得到等號(hào)判定結(jié)果xi的列。其中,在ti=0的情況下xi=2k-1,在ti≠0的情況下xi=0(步驟s371)。之后的步驟s272~s275與第二實(shí)施方式相同。
另外,也可以是,集中等號(hào)判定單元在ti=0的情況下設(shè)為xi=0,在ti≠0的情況下設(shè)為xi=2k-1,聚合運(yùn)算單元進(jìn)行xi(其中,i=0、…、n-1)的聚合與運(yùn)算(and運(yùn)算),得到其運(yùn)算結(jié)果、即聚合判定結(jié)果x。其中,在任意的等號(hào)判定結(jié)果xi(其中,i=0、…、n-1)為0的情況下x=0,在全部的等號(hào)判定結(jié)果xi(其中,i=0、…、n-1)為2k-1的情況下x=2k’-1。在該情況下,若x=0則聚合判定單元廢棄向量t(t不合格),將處理返回到步驟s12。另一方面,若x=2k-1則聚合判定單元將向量t發(fā)送到輸出單元18(t合格)。
<本方式的特征>
本方式也與第二實(shí)施方式同樣地能夠高速地生成素域上的均勻隨機(jī)數(shù)。
[其他變形例等]
再者,本發(fā)明不限定于上述的實(shí)施方式。例如,也可以預(yù)先將梅森素?cái)?shù)pi設(shè)定于隨機(jī)數(shù)生成裝置。在該情況下,能夠省略步驟s13及輸入單元13。進(jìn)而,也可以預(yù)先將向量m設(shè)定于隨機(jī)數(shù)生成裝置。在該情況下,能夠進(jìn)一步省略步驟s14及掩碼生成單元14。此外,也可以預(yù)先將二進(jìn)制隨機(jī)數(shù)向量r存儲(chǔ)到存儲(chǔ)單元12中。此外,也可以使用作為合數(shù)的梅森數(shù)來取代梅森素?cái)?shù)。例如,梅森數(shù)p0、…、pn-1可以全部是合數(shù),梅森數(shù)p0、…、pn-1也可以包含素?cái)?shù)和合數(shù)。
上述的各種處理不僅可以按照記載以時(shí)序予以執(zhí)行,也可以與執(zhí)行處理的裝置的處理能力或者需要相應(yīng)地并行地或者單獨(dú)地予以執(zhí)行。另外,不言而喻,在不脫離本發(fā)明的宗旨的范圍可以適當(dāng)?shù)刈兏?/p>
在由計(jì)算機(jī)來實(shí)現(xiàn)上述的結(jié)構(gòu)的情況下,由程序來記述各裝置所應(yīng)該具有的功能的處理內(nèi)容。通過由計(jì)算機(jī)來執(zhí)行該程序,在計(jì)算機(jī)上實(shí)現(xiàn)上述處理功能。記述了該處理內(nèi)容的程序能夠預(yù)先記錄于計(jì)算機(jī)可讀取的記錄介質(zhì)。計(jì)算機(jī)可讀取的記錄介質(zhì)的例子是非臨時(shí)性(non-transitory)的記錄介質(zhì)。這樣的記錄介質(zhì)的例子是磁記錄裝置、光盤、光磁記錄介質(zhì)、半導(dǎo)體存儲(chǔ)器等。
該程序的流通例如是通過對(duì)記錄了該程序的dvd、cd-rom等的移動(dòng)式記錄介質(zhì)進(jìn)行銷售、轉(zhuǎn)讓、租賃等而進(jìn)行。進(jìn)一步,也可以設(shè)為通過將該程序預(yù)先存儲(chǔ)到服務(wù)器計(jì)算機(jī)的存儲(chǔ)裝置,經(jīng)由網(wǎng)絡(luò)從服務(wù)器計(jì)算機(jī)將該程序傳送到其他計(jì)算機(jī),從而使該程序流通的結(jié)構(gòu)。
執(zhí)行這樣的程序的計(jì)算機(jī)例如首先將被記錄在移動(dòng)式記錄介質(zhì)中的程序或者從服務(wù)器計(jì)算機(jī)傳送來的程序暫時(shí)存儲(chǔ)到自身的存儲(chǔ)裝置中。在執(zhí)行處理時(shí),該計(jì)算機(jī)讀取被存儲(chǔ)在自身的記錄裝置中的程序,執(zhí)行依據(jù)讀取出的程序的處理。作為該程序的其他執(zhí)行方式,也可以由計(jì)算機(jī)直接從移動(dòng)式記錄介質(zhì)讀取程序,執(zhí)行依據(jù)該程序的處理,進(jìn)一步,也可以是,每當(dāng)程序被從服務(wù)器計(jì)算機(jī)傳送到該計(jì)算機(jī)時(shí),逐次執(zhí)行依據(jù)所接收到的程序的處理。也可以設(shè)為通過所謂asp(applicationserviceprovider)型的服務(wù)來執(zhí)行上述的處理的結(jié)構(gòu),該asp型的服務(wù)是指,不進(jìn)行從服務(wù)器計(jì)算機(jī)向該計(jì)算機(jī)的程序的傳送,僅通過其執(zhí)行指示和結(jié)果獲取來實(shí)現(xiàn)處理功能。
在上述實(shí)施方式中,在計(jì)算機(jī)上執(zhí)行規(guī)定的程序來實(shí)現(xiàn)了本裝置的處理功能,但是也可以由硬件來實(shí)現(xiàn)這些處理功能的至少一部分。
工業(yè)實(shí)用性
本發(fā)明例如可以利用于秘密分散、秘密計(jì)算、公鑰加密、對(duì)稱密鑰加密、電子署名等的各種加密技術(shù)。
標(biāo)號(hào)說明
1~3隨機(jī)數(shù)生成裝置