(57)【要約】  高精度な乱数を、精度に依存しないメモリ容量にて算出することが可能な乱数算出装置等が提供される。乱数算出装置１０１は、所与の数に基づく第１乱数を算出する乱数算出部１０２と、対象数値範囲における該所与の数の分だけの第２乱数に関して、所与の数値区間のうち該第２乱数を含む数値区間が所望の精度にて判定された場合における該数値区間に含まれている頻度に関する累積頻度を表す頻度情報に基づき、該第１乱数に応じた該数値区間を特定する特定部１０３とを有する。
2019021386.tif 000002
【特許請求の範囲】
【請求項１】
所与の数に基づく第１乱数を算出する乱数算出手段と、
対象数値範囲における前記所与の数の分だけの第２乱数に関して、所与の数値区間のうち該第２乱数を含む数値区間が所望の精度にて判定された場合における前記数値区間に含まれている頻度に関する累積頻度を表す頻度情報に基づき、前記第１乱数に応じた前記数値区間を特定する特定手段と
を備える乱数算出装置。
【請求項２】
前記乱数算出手段は、前記所与の数の分だけの互いに異なる前記第１乱数を算出する
請求項１に記載の乱数算出装置。
【請求項３】
前記乱数算出手段は、暗号鍵を用いて暗号文を作成する所定の暗号化手順に従い、１から前記所与の数までの少なくともいずれかの数値を暗号化することによって、互いに異なる前記第１乱数を算出し、
前記所定の暗号化手順は、異なる数値に対して異なる暗号文を算出する動作である
請求項１または請求項２に記載の乱数算出装置。
【請求項４】
前記頻度情報に基づき複数の前記第１乱数に対する数値区間を特定する場合に、前記特定手段は、前記累積頻度が前記第２乱数を超える前記数値区間を特定する
請求項１乃至請求項３のいずれかに記載の乱数算出装置。
【請求項５】
前記乱数算出手段は、前記所定の暗号化手順に従い、前記暗号鍵を用いて、１から前記所与の数までの自然数を暗号化することによって、複数の前記第１乱数を算出し、
前記特定手段は、複数の前記第１乱数に関して、それぞれ、前記数値区間を特定する
請求項３に記載の乱数算出装置。
【請求項６】
前記第２乱数を含む前記数値区間を前記所望の精度にて特定し、前記数値区間に関する前記頻度を算出する頻度算出手段と、
前記頻度に関する前記累積頻度を求め、求めた前記累積頻度を表す前記頻度情報を作成する頻度情報作成手段と
をさらに備える請求項１乃至請求項５のいずれかに記載の乱数算出装置。
【請求項７】
所定の確率分布に従う前記第２乱数を前記所望の精度にて算出する乱数算出手段
をさらに備える請求項６に記載の乱数算出装置。
【請求項８】
前記頻度算出手段は、前記所与の数のうち前記数値区間が出現する頻度に関する出現確率が合計された累積確率に基づき、０から１までの乱数に応じた前記累積確率に関する前記頻度を算出する
請求項６または請求項７に記載の乱数算出装置。
【請求項９】
請求項１乃至請求項８のいずれかに記載の乱数算出装置と、
前記乱数算出装置によって特定された前記数値区間を表す情報を暗号鍵として作成する鍵作成手段
を備える暗号装置。
【請求項１０】
前記乱数算出装置によって特定された前記数値区間を表す情報をノイズとして設定し、前記暗号鍵と、前記ノイズとを用いて暗号化処理を実行する暗号化手段
をさらに備える請求項９に記載の暗号装置。
【請求項１１】
情報処理装置によって、所与の数に基づく第１乱数を算出し、対象数値範囲における前記所与の数の分だけの第２乱数に関して、所与の数値区間のうち該第２乱数を含む数値区間が所望の精度にて判定された場合における前記数値区間に含まれている頻度に関する累積頻度を表す頻度情報に基づき、前記第１乱数に応じた前記数値区間を特定する乱数算出方法。
【請求項１２】
所与の数に基づく第１乱数を算出する乱数算出機能と、
対象数値範囲における前記所与の数の分だけの第２乱数に関して、所与の数値区間のうち該第２乱数を含む数値区間が所望の精度にて判定された場合における前記数値区間に含まれている頻度に関する累積頻度を表す頻度情報に基づき、前記第１乱数に応じた前記数値区間を特定する特定機能と
をコンピュータに実現させる乱数算出プログラムが記録された記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、精度が高い乱数を算出する乱数算出装置等に関する。
【背景技術】
【０００２】
格子暗号（Ｌａｔｔｉｃｅ−ｂａｓｅｄ  ｃｒｙｐｔｏｇｒａｐｈｙ）は、量子コンピュータ（ｑｕａｎｔｕｍ  ｃｏｍｐｕｔｅｒ）を用いて暗号を解読する場合であっても、解読することが難しい暗号の一例である。格子暗号においては、高精度な（すなわち、桁数が多い）乱数が用いられる。【０００３】
乱数を用いて処理を実行する処理の一例が特許文献１に開示されている。特許文献１には、確率分布（ｐｒｏｂａｂｉｌｉｔｙ  ｄｉｓｔｒｉｂｕｔｉｏｎ）に従う乱数の系列に基づき、情報を符号化する符号化装置が開示されている。該符号化装置は、算出した乱数を条件として用いた条件付き確率に基づき、確率分布に従う乱数の系列を算出する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−１０９６９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
格子暗号を用いて頑強な暗号を作成するためには、格子暗号において用いられる乱数は、高精度である（すなわち、桁数が多い）必要がある。また、数値シミュレーションや、データマイニング等の分野においても、高精度な乱数が必要である場合がある。しかし、精度（ｐｒｅｃｉｓｉｏｎ）が高い乱数を算出する処理には、メモリ等の計算機リソースが多く必要である。たとえ、特許文献１に開示された符号化装置を用いたとしても、高精度な乱数を算出することはできない。この理由は、該符号化装置が、精度に応じた乱数を算出することができないからである。【０００６】
そこで、本発明の目的の１つは、高精度な乱数を、精度に依存しないメモリ容量にて算出することが可能な乱数算出装置等を提供することである。
【課題を解決するための手段】
【０００７】
本発明の１つの態様として、乱数算出装置は、
所与の数に基づく第１乱数を算出する乱数算出手段と、
対象数値範囲における前記所与の数の分だけの第２乱数に関して、所与の数値区間のうち該第２乱数を含む数値区間が所望の精度にて判定された場合における前記数値区間に含まれている頻度に関する累積頻度を表す頻度情報に基づき、前記第１乱数に応じた前記数値区間を特定する特定手段と
を備える。【０００８】
また、本発明の他の態様として、乱数算出方法は、
情報処理装置によって、所与の数に基づく第１乱数を算出し、対象数値範囲における前記所与の数の分だけの第２乱数に関して、所与の数値区間のうち該第２乱数を含む数値区間が所望の精度にて判定された場合における前記数値区間に含まれている頻度に関する累積頻度を表す頻度情報に基づき、前記第１乱数に応じた前記数値区間を特定する。【０００９】
また、本発明の他の態様として、乱数算出プログラムは、
所与の数に基づく第１乱数を算出する乱数算出機能と、
対象数値範囲における前記所与の数の分だけの第２乱数に関して、所与の数値区間のうち該第２乱数を含む数値区間が所望の精度にて判定された場合における前記数値区間に含まれている頻度に関する累積頻度を表す頻度情報に基づき、前記第１乱数に応じた前記数値区間を特定する特定機能と
をコンピュータに実現させる。【００１０】
さらに、同目的は、係るプログラムを記録するコンピュータが読み取り可能な記録媒体によっても実現される。
【発明の効果】
【００１１】
本発明に係る乱数算出装置等によれば、高精度な乱数を、精度に依存しないメモリ容量にて算出することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１の実施形態に係る乱数算出装置が有する構成を示すブロック図である。
【図２】第１の実施形態に係る乱数算出装置における処理の流れを示すフローチャートである。
【図３】頻度情報記憶部に格納されている頻度情報の一例を概念的に表す図である。
【図４】確率分布の一例を概念的に表す図である。
【図５】累積分布の一例を概念的に表す図である。
【図６】本発明の第２の実施形態に係る乱数算出装置が有する構成を示すブロック図である。
【図７】第２の実施形態に係る乱数算出装置における処理のうち、頻度情報を作成する処理の流れを示すフローチャートである。
【図８】第２の実施形態に係る乱数算出装置における処理のうち、頻度情報に基づき、ある数値に関する数値区間を特定する処理の流れを示すフローチャートである。
【図９】本発明の各実施形態に係る乱数算出装置、または、暗号装置を実現可能な計算処理装置のハードウェア構成例を概略的に示すブロック図である。
【発明を実施するための形態】
【００１３】
次に、本発明を実施する実施形態について図面を参照しながら詳細に説明する。
【００１４】
＜第１の実施形態＞
図１を参照しながら、本発明の第１の実施形態に係る乱数算出装置１０１が有する構成について詳細に説明する。図１は、本発明の第１の実施形態に係る乱数算出装置１０１が有する構成を示すブロック図である。
【００１５】
第１の実施形態に係る乱数算出装置１０１は、乱数算出部１０２と、特定部１０３とを有する。乱数算出装置１０１は、さらに、頻度情報記憶部１０４を有していてもよい。
【００１６】
頻度情報記憶部１０４には、所与の各数値区間に含まれている数値の個数（または、頻度）に関する累積頻度を表す頻度情報（図３に例示）が格納されている。図３は、頻度情報記憶部１０４に格納されている頻度情報の一例を概念的に表す図である。
【００１７】
以降の説明においては、所与の各数値区間に含まれている数値の個数を、単に、「数値区間における頻度」と表す。また、説明の便宜上、数値として乱数を用いた例を参照しながら説明する。しかし、数値は、乱数に限定されない。また、乱数は、擬似乱数であってもよい。この場合に、数値区間に含まれている数値は、たとえば、乱数が所与の数分だけ存在している場合に、各数値区間に含まれている該乱数を表す。
【００１８】
頻度情報においては、数値区間を表す識別情報と、複数の数値が該数値区間に含まれている個数（すなわち、該数値区間における頻度）に関する累積頻度を表す情報とが関連付けされている。
【００１９】
複数の数値は、たとえば、確率分布４０１（図４に例示）に従い、所望の精度（または、所望の桁数）にて算出される乱数である。図４は、確率分布４０１の一例を概念的に表す図である。横軸は、確率変数（図４における「Ｘ」）の値を表す数値であり、右側であるほど数値が大きいことを表す。縦軸は、確率（図４における「Ｙ」）を表し、上側であるほど確率が高いことを表す。
【００２０】
確率分布４０１は、離散ガウス分布等の数学的に定義された確率分布であってもよいし、該所望の精度に応じて近似された確率分布であってもよい。たとえば、近似された確率分布は、所望の精度において、確率が０であると近似することができる数値範囲を無視することによって作成される。たとえば、図４に例示された確率分布に関して近似された確率分布は、数値区間ｘ１よりも小さい数値範囲における確率、及び、数値区間ｘ６よりも大きな数値範囲における確率（図４における「Ｙ」）が０であると近似することによって作成される。
【００２１】
また、数値区間は、たとえば、上記のように近似された確率分布に含まれている数値範囲が複数に分割されることによって作成される。たとえば、図４においては、第１数値区間（図４における「ｘ１」）乃至第６数値区間（図４における「ｘ６」）なる６つの数値区間が例示されている。
【００２２】
図５に例示された累積分布（ｃｕｍｕｌａｔｉｖｅ  ｄｉｓｔｒｉｂｕｔｉｏｎ）５０１は、たとえば、図４に例示された確率分布４０１に関して、数値の値が小さい方から順に（すなわち、横軸の左から順に）、確率が合計された合計値に関する分布を表す。図５は、累積分布５０１の一例を概念的に表す図である。横軸は、確率変数（図５における「Ｘ」）の値を表す数値であり、右側であるほど数値が大きいことを表す。縦軸は、累積確率（図５における「φ（ｘ）」）を表し、上側であるほど累積確率が高いことを表す。
【００２３】
たとえば、格子暗号等の暗号処理においては、累積確率に関して算出された乱数Ｒに応じた数値区間を特定する処理が、累積分布５０１に基づき実行される。この方法は、逆関数（Ｉｎｖｅｒｓｉｏｎ（ｔｒａｎｓｆｏｒｍ）  ｓａｍｐｌｉｎｇ）法とも呼ばれる。該逆関数法において、乱数Ｒに応じた数値区間を特定する処理について説明する。
【００２４】
累積分布５０１に関しては、確率分布４０１（図４に例示）と同様に、数値区間（たとえば、第１数値区間乃至第６数値区間）を定義することができる。累積分布５０１は、確率変数の値が増加するにつれ単調に増加する関数である。図５に例示された累積分布５０１においては、各数値区間に応じた累積確率の範囲が、以下のように決定される。
【００２５】
第１数値区間：ｙ１以下である範囲、
第２数値区間：ｙ１より大きくｙ２以下である範囲、
第３数値区間：ｙ２より大きくｙ３以下である範囲、
第４数値区間：ｙ３より大きくｙ４以下である範囲、
第５数値区間：ｙ４より大きくｙ５以下である範囲、
第６数値区間：ｙ５より大きくｙ６以下である範囲。
【００２６】
ｙ６は、たとえば、累積確率「１」を表す。
【００２７】
該累積確率の範囲は、数値区間を特定する基である情報である。
【００２８】
乱数Ｒに応じた数値区間を特定する処理においては、乱数Ｒを含む範囲（すなわち、「ｙｉ−１＜Ｒ≦ｙｉ」）が特定され、特定された範囲に応じた数値区間が特定される。図５に例示された累積分布５０１において、乱数Ｒが「ｙ２＜Ｒ≦ｙ３」を満たしているので、乱数Ｒに応じた数値区間は、第３数値区間（図５における「ｘ３」）である。乱数Ｒが複数である場合には、各乱数に関して、数値区間を特定する処理が実行される。また、所望の精度にて算出された乱数Ｒに関する数値区間を特定する場合には、乱数Ｒが含まれている範囲を表す閾値（たとえば、上述したｙ１乃至ｙ６）を、少なくとも、該所望の精度にて設定する必要がある。たとえば、高い精度を有する乱数を算出するためには、該乱数に関する精度と同等以上の精度にて閾値を表す必要がある。
【００２９】
図３に例示された頻度情報において、累積頻度は、各数値区間であると特定された乱数の個数（頻度）に関する累積頻度である。数値区間を特定する処理は、図５を参照しながら上述したような処理と同様な処理である。該処理においては、たとえば、ある確率分布に従い、所与の数の分だけの乱数が所望の精度にて算出され、算出された乱数に関して、該所望の精度にて該乱数に関する数値区間が特定される。
【００３０】
所与の数は、たとえば、本実施形態に係る乱数算出装置１０１によって算出される乱数を利用する場合における利用形態、または、該乱数を利用するブロック暗号の種類に応じて決められる。ここで、所与の数を「Ｎ」（Nは、自然数）と表すとする。たとえば、所与の数は、十分に安全であり、かつ、実用的な（たとえば、（ｌｏｇ  Ｎ）程度ビット幅を有する）ビットブロック暗号が存在しており、かつ、該利用形態によって要求される個数よりも大きい値に設定される。ただし、「ｌｏｇ」は、たとえば、２を底とする対数関数を表す。所与の数が少ないほど、乱数を算出する処理に要するメモリ容量は少ない。所与の数は、たとえば、ブロック暗号の種類に応じた値（２３２、または、２６４等の値）設定される。
【００３１】
図３に例示された頻度情報における累積頻度に関する頻度は、所望の精度にて算出された乱数（または、数値）に関する数値区間を、該所望の精度にて特定した場合に、各数値区間に含まれる該乱数の個数（頻度）を表す。したがって、図３に例示された頻度情報において、累積頻度は、数値区間における数値が小さい数値区間から順に（たとえば、図４における横軸方向左から順に）、該数値区間に含まれている頻度が合計された合計値を表している。
【００３２】
図４に例示された確率分布に従い算出される乱数の例を参照しながら、頻度情報（図３に例示）について説明する。説明の便宜上、乱数の個数は、第１数値区間乃至第６数値区間に関して、以下に示す通りであるとする。
【００３３】
第１数値区間：１個、
第２数値区間：４個、
第３数値区間：７個、
第４数値区間：５個、
第５数値区間：２個、
第６数値区間：１個。
【００３４】
この例において、第１数値区間に関する累積頻度は、１である。第２数値区間に関する累積頻度は、５（＝１＋４）である。第３数値区間に関する累積頻度は、１２（＝５＋７）である。第４数値区間に関する累積頻度は、１７（＝１２＋５）である。第５数値区間に関する累積頻度は、１９（＝１７＋２）である。第６数値区間に関する累積頻度は、２０（＝１９＋１）である。したがって、図３に例示された頻度情報において累積頻度の最大値が２０であるので、図３に示された例において、上述したような所与の数は、２０である。
【００３５】
言い換えると、頻度情報は、対象数値範囲（たとえば、第１数値区間乃至第６数値区間）における所与の数の分だけの第２乱数に関して作成された頻度に関する累積頻度を表す情報を含む。該頻度情報に関して、該頻度は、該第２乱数を含む数値区間が所望の精度にて判定された場合に算出される頻度である。該対象数値範囲は、頻度を算出する対象である数値範囲を表す。
【００３６】
頻度情報は、たとえば、図７を参照しながら後述する処理に従い作成されてもよい。または、頻度情報は、所与の数と、各数値区間に関する確率を用いて構成される二項分布（ｂｉｎｏｍｉａｌ  ｄｉｓｔｒｉｂｕｔｉｏｎ）を用いて、該所与の数の分だけの乱数を算出することができる。この処理については、第２の実施形態にて式１乃至式３を参照しながら詳細に説明する。二項分布を用いて頻度情報を作成する処理によって、所与の数が多い場合であっても、効率的に、かつ、正確に乱数を算出することが可能である。この理由については、第２の実施形態にて詳述する。
【００３７】
次に、図２を参照しながら、本発明の第１の実施形態に係る乱数算出装置１０１における処理について詳細に説明する。図２は、第１の実施形態に係る乱数算出装置１０１における処理の流れを示すフローチャートである。
【００３８】
乱数算出部１０２は、１から所与の数までの間の数値に関して、乱数（以降、「第１乱数」と表す）を、少なくとも１つ、算出する（ステップＳ１０１）。したがって、乱数算出部１０２は、該所与の数に基づく第１乱数を算出する。乱数算出部１０２は、第１乱数を、たとえば、重複のない一様分布から選択する。後述する図８に示されたループ処理において、乱数算出部１０２は、ループ処理を実行する場合に、該第１乱数を、たとえば、所定の範囲における値のうち過去に出現した値以外の値の中から、ランダムに選択する。第１乱数は、図８におけるステップＳ２１１を参照しながら後述するような処理に従い算出される乱数であってもよいし、１から所与の数までの整数をランダムに並び替えることによって算出される乱数であってもよい。第１乱数を算出する方法は、上述した例に限定されない。
【００３９】
乱数算出部１０２は、算出した第１乱数を特定部１０３に入力する。
【００４０】
特定部１０３は、乱数算出部１０２が算出した第１乱数を受け取る。特定部１０３は、頻度情報記憶部１０４に格納されている頻度情報（図３に例示）のうち、累積頻度が該第１乱数を超える数値区間を特定する（ステップＳ１０２）。説明の便宜上、第１乱数は、８であるとする。図３に例示された頻度情報の場合に、頻度情報における累積頻度が第１乱数（この例において８）を超える数値区間は、第３数値区間（すなわち、数値区間ｘ３）である。したがって、図３に例示された頻度情報において、特定部１０３は、ステップＳ１０２に示された処理において、第３数値区間を特定する。
【００４１】
特定部１０３は、特定した数値区間を表す識別情報を出力してもよい。識別情報は、たとえば、数値区間における上限値、または、下限値等の数値である。
【００４２】
乱数算出装置１０１は、図２に示された処理を、所与の数回、実行することによって、各乱数に関する数値範囲を特定し、特定した該数値範囲を表す情報を出力してもよい。図２に示された処理を、所与の数回、実行することによって、頻度情報における累積頻度（すなわち、第２乱数に関する分布）に従う乱数を算出することができる。
【００４３】
乱数算出装置１０１は、図２に示された処理を所与の数回、実行する処理を、互いに異なる乱数系列に従い算出した第１乱数に対して実行してもよい。この場合に、乱数算出装置１０１は、図２に示された処理を、所与の数回、実行することによって、頻度情報における累積頻度（すなわち、第２乱数に関する分布）に従う乱数系列を複数算出することができる。
【００４４】
乱数算出部１０２は、互いに異なる第１乱数を、所与の数分だけ算出してもよい。この場合に、特定部１０３は、乱数算出部１０２が算出した各第１乱数に関して、該第１乱数に応じた数値区間を特定する処理を実行する。この結果、乱数算出装置１０１は、第２乱数の分布に従う乱数を、所与の数分だけ算出することができる。
【００４５】
次に、本発明の第１の実施形態に係る乱数算出装置１０１に関する効果について説明する。
【００４６】
第１の実施形態に係る乱数算出装置１０１によれば、高精度な乱数を、精度に依存しないメモリ容量にて算出することができる。この理由について説明する。
【００４７】
説明の便宜上、数値の精度は、該数値を表すビット列の長さ（すなわち、該数値の桁数）であるとする。また、ビット列の長さは、ｅ（ただし、ｅは、１２８、２５６、５１２、１０２４、２０４８、４０９６等の正の整数である）であるとする。この場合に、該数値は、ｅビットを用いて表されている。
【００４８】
格子暗号等において用いられる乱数としては、所望の精度を有する乱数が用いられる。この処理においては、たとえば、乱数として、ｅビットを有する乱数Ｕを算出し、算出した乱数Ｕを含む数値区間を特定する処理が実行される。格子暗号等においては、たとえば、ある確率分布に関する累積確率を表す累積確率関数φにおいて、乱数Ｕを含む数値区間を特定する処理が実行される。累積確率は、確率変数の値が小さい順に、該確率変数に関する確率を合計することによって算出される。すなわち、累積確率は、確率変数の値が、ある値以下である場合の確率を表す。数値区間を特定する処理は、「φ（ｋ−１）＜（乱数Ｕ）≦φ（ｋ）」を満たしている数値ｋを特定する処理であると表すことができる。
【００４９】
数値区間を特定する処理においては、たとえば、以下のように、累積確率関数φに関する値が与えられる。
【００５０】
φ（−１）＝０．４４４４４、
φ（０）＝０．５５５５５、
φ（１）＝０．６４４４４。
【００５１】
ただし、数値区間を特定する処理においては、累積確率関数φの値は、所望の精度にて表されているとする。この例において、数値区間は、２つの数値区間（すなわち、「φ（−１）＜（乱数Ｕ）≦φ（０）」なる数値区間と、「φ（０）＜（乱数Ｕ）≦φ（１）」なる数値区間）である。
【００５２】
説明の便宜上、乱数Ｕは、０．５４３２１であるとする。
【００５３】
乱数Ｕに関する数値区間を特定する処理においては、たとえば、φ（−１）、φ（０）、及び、φ（１）と、乱数Ｕとに関して、所望の精度にて大小が比較される。この例においては「φ（０）＜（乱数Ｕ）≦φ（１）」であるので、数値区間を特定する処理においては、数値ｋとして、０が算出される。したがって、数値区間がｍ（ｍは、自然数）個である場合に、数値区間を特定する処理においては、（ｍ×ｅ）ビットの大きさを有する参照情報を参照する必要がある。該参照情報においては、数値区間と、該数値区間を特定する基となる閾値とが関連付けされている。したがって、乱数の精度が高いほど、該乱数を算出する処理に、より多くのメモリ容量が必要である。
【００５４】
これに対して、第１の実施形態に係る乱数算出装置１０１において、頻度情報は、（ｍ×ｅ）ビットよりも小さな情報を参照する。この理由について説明する。
【００５５】
説明の便宜上、数値区間の個数は、上述した説明と同様に、ｍ個であるとする。
【００５６】
図３に例示された頻度情報においては、累積頻度は、整数であり、ｊ（ｊは、自然数）ビットを用いて表されているとする。所与の数は、たとえば、ブロック暗号の種類に応じた値（２３２、または、２６４等の値）である。したがって、この場合に、ｊは、３２（ビット）、または、６４（ビット）という値である。したがって、累積頻度を表すビット数ｊは、所望の精度を表すビット数ｅに比べて小さい。
【００５７】
第１の実施形態に係る乱数算出装置１０１において、頻度情報（図３に例示）は、（ｍ×ｊ）ビットの大きさを有している。したがって、頻度情報（図３に例示）が、（ｍ×ｅ）ビットよりも小さい大きさであるので、乱数算出装置１０１によれば、少ないメモリ容量にて算出することができる。また、該メモリ容量は、乱数に関する精度（すなわち、所望の精度）によらずに、一定である。したがって、乱数算出装置１０１によれば、精度に依存しないメモリ容量にて算出することができる。
【００５８】
また、図３を参照しながら上述したように、頻度情報は、所与の数の分だけの乱数が、所望の精度にて算出され、算出された乱数に関して、該所望の精度にて該乱数に関する数値区間が特定される場合における、該数値区間における頻度を表す。したがって、該頻度情報に基づき特定される数値区間は、参照情報を参照しながら特定した数値区間と同様な情報である。したがって、第１の実施形態に係る乱数算出装置１０１によれば、高精度な乱数を算出することができる。
【００５９】
上述した効果をまとめると、第１の実施形態に係る乱数算出装置１０１によれば、高精度な乱数を、精度に依存しないメモリ容量にて算出することができる。
【００６０】
＜第２の実施形態＞
次に、上述した第１の実施形態を基本とする本発明の第２の実施形態について説明する。
【００６１】
図６を参照しながら、本発明の第２の実施形態に係る乱数算出装置２０１が有する構成について詳細に説明する。図６は、本発明の第２の実施形態に係る乱数算出装置２０１が有する構成を示すブロック図である。
【００６２】
第２の実施形態に係る乱数算出装置２０１は、乱数算出部２０３と、特定部２０４と、頻度情報記憶部２０８と、頻度算出部２０６と、頻度情報作成部２０７とを有する。乱数算出装置２０１は、さらに、第２乱数算出部２０５を有していてもよい。
【００６３】
頻度情報記憶部２０８には、図７を参照しながら後述する処理に従い作成される頻度情報（図３に例示）が格納される。特定部２０４は、図８を参照しながら後述する処理に従い、頻度情報記憶部２０８に格納されている頻度情報（図３に例示）に基づき、ある数値に関する数値区間を特定する。特定部２０４における処理は、たとえば、図２を参照しながら上述した処理と同様な処理であってもよい。
【００６４】
乱数算出装置２０１は、たとえば、図６に例示されているように、暗号装置２１０に含まれていてもよい。この場合に、暗号装置２１０は、乱数算出装置２０１と、鍵作成部２１１と、暗号化部２１２とを有する。
【００６５】
第２の実施形態に係る乱数算出装置２０１における処理は、頻度情報を作成する処理（図７を参照しながら後述する）と、作成した該頻度情報に基づき、ある数値に関する数値区間を特定する処理（図８を参照しながら後述する）とに大別される。
【００６６】
次に、図７を参照しながら、本発明の第２の実施形態に係る乱数算出装置２０１における処理のうち、頻度情報（図３に例示）を作成する処理について説明する。図７は、第２の実施形態に係る乱数算出装置２０１における処理のうち、頻度情報を作成する処理の流れを示すフローチャートである。
【００６７】
第２乱数算出部２０５は、所定の確率分布（図４に例示）に従う確率を、所与の数の分だけ、選択する（ステップＳ２０１）。該確率を選択する処理は、たとえば、ランダム、または、擬似的にランダムに選択する処理である。該確率は、所望の精度（または、所望の桁数）にて表されており、たとえば、ｅビットを用いて表されている。第２乱数算出部２０５は、選択した確率を表す情報を、頻度算出部２０６に入力する。また、所定の確率分布は、たとえば、離散ガウス分布において、平均が０であり、確率が０と近似できる数値区間以外の数値区間における確率が正規化された分布である。
【００６８】
頻度算出部２０６は、第２乱数算出部２０５から、該確率を表す情報を受け取る。頻度算出部２０６は、各確率に応じた数値区間を、少なくとも所望の精度にて選択する（ステップＳ２０２）。頻度算出部２０６は、各数値区間に関して、ステップＳ２０２にて選択された頻度（回数）を算出する（ステップＳ２０３）。頻度算出部２０６は、ステップＳ２０２、及び、ステップＳ２０３を、該乱数の個数（すなわち、所与の数）分だけ、実行する。ステップＳ２０２、及び、ステップＳ２０３における処理は、図５を参照しながら説明した処理と同様な処理である。頻度算出部２０６は、算出した頻度を表す情報を頻度情報作成部２０７に入力する。
【００６９】
頻度情報作成部２０７は、頻度算出部２０６が入力した頻度を表す情報を受け取る。頻度情報作成部２０７は、該頻度を表す情報に関して、小さな値である数値区間から順に合計値を算出することによって、該所与の数値区間に関する累積頻度を算出する（ステップＳ２０４）。頻度情報作成部２０７は、該数値区間を表す情報と、該数値区間に関して算出された該累積頻度とが関連付けされた頻度情報（図３に例示）を作成し（ステップＳ２０５）、作成した該頻度情報を、頻度情報記憶部２０８に格納する。
【００７０】
次に、図８を参照しながら、本発明の第２の実施形態に係る乱数算出装置２０１における処理のうち、頻度情報（図３に例示）に基づき、ある数値に関する数値区間を特定する処理について説明する。図８は、第２の実施形態に係る乱数算出装置２０１における処理のうち、頻度情報（図３に例示）に基づき、ある数値に関する数値区間を特定する処理の流れを示すフローチャートである。
【００７１】
図８に示されたステップＳ２１１乃至ステップＳ２１２における処理は、第１乱数ごとのループ処理において、繰り返し実行される。
【００７２】
乱数算出部２０３は、たとえば、１から所与の数までの間の数値のうち少なくともいずれかの数値を所定の暗号化手順に従い暗号化することによって、第１乱数を算出する（ステップＳ２１１）。所定の暗号化手順は、たとえば、暗号鍵を用いて暗号化するブロック暗号方式に従った処理である。乱数算出部２０３は、複数の第１乱数を算出する場合に、図８に示されたループ処理ごとに互いに異なる平文を、ブロック暗号に従い、ある暗号鍵を用いて暗号化することによって、該第１乱数を算出する。該異なる平文は、たとえば、１から所与の数までの数値の中から、重複なく、かつ、ランダムに選ばれる数値である。
【００７３】
該ブロック暗号は、異なる平文に対して異なる暗号文を算出する暗号である。したがって、図８に示されたループ処理ごとに異なる平文を、ブロック暗号を用いて暗号化することによって、該ループ処理ごとに異なる暗号文が作成される。本実施形態において、該暗号文が該第１乱数として用いられる。
【００７４】
ブロック暗号に対する入力（この場合に、平文）は、たとえば、ループ処理ごとに重複のない数である。該入力は、たとえば、１からＭまでの自然数のうち、ループ処理ごとに異なる値が選ばれることによって設定されてもよい。または、該入力は、第Ｉ（ただし、Ｉは自然数）回目のループ処理において、自然数Ｉであってもよい。このような処理によって、ブロック暗号に対する入力が、ループ処理ごとに互いに異なっているので、該ブロック暗号に従い暗号化された暗号文は、互いに異なっている。したがって、該暗号文を、第１乱数として用いることができる。
【００７５】
説明の便宜上、暗号鍵Ｋを用いて、平文Ｃを暗号化することにより作成される暗号文を「Ｅｎｃ（Ｋ、Ｃ）」と表す。
【００７６】
上述した例において、乱数算出部２０３は、第１乱数として、たとえば、Ｅｎｃ（Ｋ，１）、Ｅｎｃ（Ｋ，２）、または、Ｅｎｃ（Ｋ，３）等の暗号文を作成する。
【００７７】
乱数算出部２０３は、作成した該第１乱数を表す情報を特定部２０４に入力する。
【００７８】
特定部２０４は、乱数算出部２０３から該第１乱数を表す情報を受け取る。特定部２０４は、頻度情報記憶部２０８に格納されている頻度情報（図３に例示）のうち、累積頻度が該第１乱数を超える数値区間を特定する（ステップＳ２１２）。上述したように、累積頻度は、第２乱数に関する所望の精度よりも低い精度にて表されている。したがって、累積頻度を特定する処理は、所望の精度にて第２乱数に関する数値区間を特定する処理も、少ない処理にて実現することができる。
【００７９】
たとえば、上述した例において、第１乱数を第１数値区間乃至第６数値区間に分類する条件は、以下に示すような閾値ｔ１乃至閾値ｔ６を用いて表すことができる。
【００８０】
第１数値区間：第１乱数がｔ１以下である、
第２数値区間：第１乱数がｔ１より大きくｔ２以下である、
第３数値区間：第１乱数がｔ２より大きくｔ３以下である、
第４数値区間：第１乱数がｔ３より大きくｔ４以下である、
第５数値区間：第１乱数がｔ４より大きくｔ５以下である、
第６数値区間：第１乱数がｔ５より大きくｔ６以下である。
【００８１】
図３に例示された頻度情報の場合には、たとえば、ｔ１は、１である。ｔ２は、５である。ｔ３は、１２である。ｔ４は、１７である。ｔ５は、１９である。ｔ６は、２０である。
【００８２】
言い換えると、特定部２０４は、ステップＳ２１２において、「ｔｉ−１＜（第１乱数）≦ｔｉ」を満たしている「ｉ」を特定することによって、第１乱数に関する数値区間を特定する。特定部２０４は、特定した数値区間を表す識別情報（この例では、「ｉ」）を出力してもよい。ステップＳ２１２において、特定部２０４は、たとえば、２分探索法に従い数値区間を特定することができる。
【００８３】
次に、頻度情報を作成する処理の一例について説明する。該処理は、図７におけるステップＳ２０１乃至ステップＳ２０３に示されている処理を実現する処理の一例である。
【００８４】
説明の便宜上、第１数値区間乃至第ｍ（ｍは、自然数を表す）数値区間について、頻度情報を作成するとする。また、所定の確率分布に従い、第ｉ（ただし、１≦ｉ≦ｍ）数値区間に関する確率（たとえば、図４における縦軸方向に示された確率）をｐｉと表す。頻度情報を作成する処理において、頻度算出部２０６は、第ｉ数値区間における頻度を算出する。さらに、頻度算出部２０６は、第ｉ数値区間に関して、「ｉ」が小さい数値区間から順に（たとえば、図４における横軸方向の左から右に）頻度を算出するとする。しかし、頻度算出部２０６は、必ずしも「ｉ」が小さい数値区間から作成しなくてもよい。また、Ｎは、所与の数を表すとする。「ａＣｂ」は、ａ個の中からｂ個を選ぶ組み合わせの個数を表すとする。「Ｐｒ（Ａ｜Ｂ）」は、事象Ｂが生じた場合において事象Ａが生じる条件付き確率を表す。
【００８５】
頻度算出部２０６は、所定の確率分布に従うＮ個の乱数のうち、第１数値区間における頻度がｋ１（ｋ１は自然数）であり、かつ、第１数値区間以外の数値区間における頻度が（Ｎ−ｋ１）である出現確率（式１に例示）に基づき、第１数値区間における頻度（すなわち、ｋ１）を算出する。
2019021386.tif 000003
【００８６】
より具体的に該処理を説明する。第２乱数算出部２０５は、第２乱数を算出する。頻度算出部２０６は、式１に例示された二項分布に関する累積確率が、該第２乱数を超える頻度ｋ１を、第１数値区間における頻度として算出する。
【００８７】
説明の便宜上、第１数値区間に関して算出された頻度を「ｄ１」と表す。この場合に、式１に示された分布は、Ｐｒ（ｎ１＝ｄ１）と表すこともできる。
【００８８】
次に、頻度算出部２０６は、第１数値区間における頻度がｄ１である場合に、所定の確率分布に従うＮ個の乱数のうち、第２数値区間における頻度がｋ２（ｋ２は自然数）である出現確率（式２に例示）に基づき、第２数値区間における頻度（すなわち、ｋ２）を算出する。
2019021386.tif 000004
【００８９】
式２に示された二項分布は、所定の確率分布に従うＮ個の乱数のうち、第１数値区間における頻度（ｄ１）以外の個数（Ｎ−ｄ１）にて、第２数値区間における頻度がｋ２であり、第１数値区間及び第２数値区間以外の頻度が（Ｎ−ｄ１−ｋ２）以外である確率を表す。
【００９０】
より具体的に該処理を説明する。第２乱数算出部２０５は、第２乱数を算出する。頻度算出部２０６は、式２に例示された二項分布に関する累積確率分布が、該第２乱数を超える頻度ｋ２を、第２数値区間における頻度として算出する。
【００９１】
説明の便宜上、第１数値区間に関して算出された頻度を「ｄ２」と表す。この場合に、式２に示された分布は、Ｐｒ（ｎ２＝ｄ２｜ｎ１＝ｄ１）と表すこともできる。
【００９２】
第３数値区間以降の数値区間に関しても、第２乱数算出部２０５、及び、頻度算出部２０６は、上述した処理と同様な処理を実行することによって、各数値区間における頻度を算出する。
【００９３】
次に、頻度算出部２０６が第ｉ数値区間における頻度を算出する処理について説明する。この場合に、上述した仮定から、第１数値区間乃至第（ｉ−１）数値区間における頻度は、それぞれ、ｄ１乃至ｄｉ−１として算出されている。頻度算出部２０６は、第１数値区間乃至第（ｉ−１）数値区間における頻度が上述したように算出されている場合に、所定の確率分布に従うＮ個の乱数のうち、第ｉ数値区間における頻度がｋｉ（ｋｉは自然数）である出現確率（式３に例示）に基づき、第ｉ数値区間における頻度（すなわち、ｋｉ）を算出する。
2019021386.tif 000005
【００９４】
式３に示された二項分布は、所定の確率分布に従うＮ個の乱数のうち、第１数値区間乃至第（ｉ−１）数値区間における頻度が、それぞれ、ｄ１乃至ｄｉ−１である場合に、第ｉ数値区間における頻度がｋｉであり、第１数値区間乃至第（ｉ−１）数値区間以外の頻度が（Ｎ−ｄ１−ｄ２−・・・−ｄｉ−１）以外である確率を表す。
【００９５】
より具体的に該処理を説明する。第２乱数算出部２０５は、第２乱数を算出する。頻度算出部２０６は、式３に例示された二項分布に関する累積確率分布が、該第２乱数を超えるｋｉを、第ｉ数値区間における頻度として算出する。この場合に、式３に示された分布は、Ｐｒ（ｎｉ＝ｄｉ｜ｎ１＝ｄ１，ｎ２＝ｄ２，・・・，ｎｉ−１＝ｄｉ−１）と表すこともできる。
【００９６】
上述したような処理が、第１数値区間乃至第（ｍ−１）数値区間まで繰り返し実行される。頻度算出部２０６は、第ｍ数値区間における頻度を、たとえば、所与の数から、第１数値区間乃至第（ｍ−１）数値区間における各頻度を引き算することによって算出する。
【００９７】
次に、乱数算出装置２０１が算出した乱数を用いて、格子暗号等の暗号方式が実現される暗号装置２１０の一例について、簡易的に説明する。ただし、乱数を用いて格子暗号を実現する方法は、多くの方法が知られているので、本実施形態においては、詳細な説明を省略する。また、乱数算出装置２０１が算出した乱数を用いて実現される暗号装置は、以下に示す例に限定されない。
【００９８】
鍵作成部２１１は、乱数算出装置２０１が特定した数値区間を表す情報を暗号鍵として出力する。該情報は、たとえば、該数値区間における上限値である。該上限値は、乱数として扱うことができる。したがって、暗号化部２１２は、乱数算出装置２０１から乱数を受け取り、受け取った乱数を該暗号鍵として出力する。
【００９９】
暗号化部２１２は、乱数算出装置２０１が特定した数値区間を表す情報を、少なくとも１つの数値区間に関して受け取る。また、暗号化部２１２は、暗号化する対象である平文を表す情報を受け取る。上述したように、該情報は、たとえば、該数値区間における上限値である。該上限値は、乱数として扱うことができる。したがって、暗号化部２１２は、乱数算出装置２０１から少なくとも１つの乱数を受け取る。暗号化部２１２は、暗号鍵と、平文と、該乱数とに対して、所定の暗号化手順を適用することによって、該平文に対する暗号文を作成する。所定の暗号化手順は、たとえば、該乱数をノイズとして設定し、該暗号鍵と、該ノイズとを用いて該平文を暗号化する処理である。
【０１００】
次に、本発明の第２の実施形態に係る乱数算出装置２０１に関する効果について説明する。
【０１０１】
第２の実施形態に係る乱数算出装置２０１によれば、高精度な乱数を、精度に依存しないメモリ容量にて算出することができる。この理由は、第１の実施形態にて説明した理由と同様である。
【０１０２】
さらに、第２の実施形態に係る乱数算出装置２０１によって算出された乱数に基づき暗号化処理等を実行する暗号装置２１０によれば、暗号に関して高い安全性を保つことができる。この理由は、第１の実施形態にて上述したように、乱数算出装置２０１が高精度な乱数を算出するからである。
【０１０３】
第２の実施形態に係る乱数算出装置２０１によれば、さらに、複数の乱数を効率よく算出することができる。この理由は、１から所与の数までの数値のうちの複数の数値を、ブロック暗号に従い暗号化することによって乱数を算出する処理が、複数の数値をシャッフルすることにより乱数を算出する処理も処理量が少ないからである。重複のない乱数を複数算出する方法には、たとえば、重複のない数値を含む数値列に関して当該数値列に含まれる数値をランダムに並び替える（シャッフルする）ことによって乱数を算出する方法等がある。これに対して、乱数算出装置２０１は、ブロック暗号を用いて異なる平文を暗号化することによって乱数を算出する。複数の数値をシャッフルすることにより乱数を算出する手法に関しては、該複数の数値をシャッフルする処理が進むにつれ、シャッフルされていない数値をシャッフルする対象として選択する処理に要する処理量が増える。これに対して、乱数算出装置２０１における処理は、複数の数値をブロック暗号に従い暗号化することによって乱数を算出する動作である。ブロック暗号に従い暗号化することにより乱数を算出する処理においては、乱数を複数算出する場合であっても、処理が進むにつれて処理量が増えることはない。この結果、第２の実施形態に係る乱数算出装置２０１によれば、さらに、複数の乱数を効率よく算出することができる。
【０１０４】
第２の実施形態に係る乱数算出装置２０１によれば、さらに、所望の精度を有する乱数を複数含む乱数系列を複数算出する場合であっても、精度に依存しないメモリ容量にて、該複数の乱数系列を算出することができる。この理由は、頻度算出部２０６が所望の精度にて第２乱数を含む数値区間を特定することによって作成した頻度情報（図３に例示）に基づき、第１乱数に関する数値区間を特定することができるからである。
【０１０５】
また、第２の実施形態に係る乱数算出装置２０１によれば、二項分布に関する累積分布に基づき頻度を算出することによって、効率的に、頻度情報（図３に例示）を作成することができる。この理由は、所与の数の分だけの頻度情報を、該所与の数分よりも少ない乱数の算出回数にて算出することができるからである。
【０１０６】
（ハードウェア構成例）
上述した本発明の各実施形態に係る乱数算出装置、または、暗号装置を、１つの計算処理装置（情報処理装置、コンピュータ）を用いて実現するハードウェア資源の構成例について説明する。但し、係る乱数算出装置は、物理的または機能的に少なくとも２つの計算処理装置を用いて実現されてもよい。また、係る乱数算出装置、または、暗号装置は、専用の装置として実現されてもよい。
【０１０７】
図９は、本発明の各実施形態に係る乱数算出装置、または、暗号装置を実現可能な計算処理装置のハードウェア構成例を概略的に示すブロック図である。計算処理装置２０は、中央処理演算装置（Ｃｅｎｔｒａｌ＿Ｐｒｏｃｅｓｓｉｎｇ＿Ｕｎｉｔ、以降「ＣＰＵ」と表す）２１、メモリ２２、ディスク２３、不揮発性記録媒体２４、及び、通信インターフェース（以降、「通信ＩＦ」と表す）２７を有する。計算処理装置２０は、入力装置２５、出力装置２６に接続可能であってもよい。計算処理装置２０は、通信ＩＦ２７を介して、他の計算処理装置、及び、通信装置と情報を送受信することができる。
【０１０８】
不揮発性記録媒体２４は、コンピュータが読み取り可能な、たとえば、コンパクトディスク（Ｃｏｍｐａｃｔ＿Ｄｉｓｃ）、デジタルバーサタイルディスク（Ｄｉｇｉｔａｌ＿Ｖｅｒｓａｔｉｌｅ＿Ｄｉｓｃ）である。また、不揮発性記録媒体２４は、ユニバーサルシリアルバスメモリ（ＵＳＢメモリ）、ソリッドステートドライブ（Ｓｏｌｉｄ＿Ｓｔａｔｅ＿Ｄｒｉｖｅ）等であってもよい。不揮発性記録媒体２４は、電源を供給しなくても係るプログラムを保持し、持ち運びを可能にする。不揮発性記録媒体２４は、上述した媒体に限定されない。また、不揮発性記録媒体２４の代わりに、通信ＩＦ２７、及び、通信ネットワークを介して係るプログラムを持ち運びしてもよい。
【０１０９】
すなわち、ＣＰＵ２１は、ディスク２３に格納されているソフトウェア・プログラム（コンピュータ・プログラム：以下、単に「プログラム」と称する）を、実行する際にメモリ２２にコピーし、演算処理を実行する。ＣＰＵ２１は、プログラム実行に必要なデータをメモリ２２から読み取る。表示が必要な場合に、ＣＰＵ２１は、出力装置２６に出力結果を表示する。外部からプログラムを入力する場合に、ＣＰＵ２１は、入力装置２５からプログラムを読み取る。ＣＰＵ２１は、上述した図１、または、図６に示す各部が表す機能（処理）に対応するところのメモリ２２にある乱数算出プログラム（図２、図７、または、図８）を解釈し実行する。ＣＰＵ２１は、上述した本発明の各実施形態において説明した処理を順次実行する。
【０１１０】
すなわち、このような場合に、本発明の各実施形態は、係る乱数算出プログラムによっても成し得ると捉えることができる。さらに、係る乱数算出プログラムが記録されたコンピュータが読み取り可能な不揮発性の記録媒体によっても、本発明の各実施形態は成し得ると捉えることができる。
【０１１１】
以上、上述した実施形態を模範的な例として本発明を説明した。しかし、本発明は、上述した実施形態には限定されない。すなわち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【０１１２】
尚、上述した各実施形態の一部又は全部は、以下の付記のようにも記載されうる。しかし、上述した各実施形態により例示的に説明した本発明は、以下には限られない。
【０１１３】
（付記１）
所与の数に基づく第１乱数を算出する乱数算出手段と、
対象数値範囲における前記所与の数の分だけの第２乱数に関して、所与の数値区間のうち該第２乱数を含む数値区間が所望の精度にて判定された場合における前記数値区間に含まれている頻度に関する累積頻度を表す頻度情報に基づき、前記第１乱数に応じた前記数値区間を特定する特定手段と
を備える乱数算出装置。
【０１１４】
（付記２）
前記乱数算出手段は、前記所与の数の分だけの互いに異なる前記第１乱数を算出する
付記１に記載の乱数算出装置。
【０１１５】
（付記３）
前記乱数算出手段は、暗号鍵を用いて暗号文を作成する所定の暗号化手順に従い、１から所与の数までの少なくともいずれかの数値を暗号化することによって、互いに異なる前記第１乱数を算出し、
前記所定の暗号化手順は、異なる数値に対して異なる暗号文を算出する動作である
付記１または付記２に記載の乱数算出装置。
【０１１６】
（付記４）
前記頻度情報に基づき複数の前記第１乱数に対する数値区間を特定する場合に、前記特定手段は、前記累積頻度が前記第２乱数を超える前記数値区間を特定する
付記１乃至付記３のいずれかに記載の乱数算出装置。
【０１１７】
（付記５）
前記乱数算出手段は、前記所定の暗号化手順に従い、前記暗号鍵を用いて、１から所与の数までの自然数を暗号化することによって、複数の前記第１乱数を算出し、
前記特定手段は、複数の前記第１乱数に関して、それぞれ、前記数値区間を特定する
付記３に記載の乱数算出装置。
【０１１８】
（付記６）
前記第２乱数を含む前記数値区間を前記所望の精度にて特定し、前記数値区間に関する前記頻度を算出する頻度算出手段と、
前記頻度に関する前記累積頻度を求め、求めた前記累積頻度を表す前記頻度情報を作成する頻度情報作成手段と
をさらに備える付記１乃至付記５のいずれかに記載の乱数算出装置。
【０１１９】
（付記７）
所定の確率分布に従う前記第２乱数を前記所望の精度にて算出する乱数算出手段
をさらに備える付記６に記載の乱数算出装置。
【０１２０】
（付記８）
前記頻度算出手段は、前記所与の数のうち前記数値区間が出現する頻度に関する出現確率が合計された累積確率に基づき、０から１までの乱数に応じた前記累積確率に関する前記頻度を算出する
付記６または付記７に記載の乱数算出装置。
【０１２１】
（付記９）
付記１乃至付記８のいずれかに記載の乱数算出装置と、
前記乱数算出装置によって特定された前記数値区間を表す情報を暗号鍵として作成する鍵作成手段
を備える暗号装置。
【０１２２】
（付記１０）
前記乱数算出装置によって特定された前記数値区間を表す情報をノイズとして設定し、前記暗号鍵と、前記ノイズとを用いて暗号化処理を実行する暗号化手段
をさらに備える付記９に記載の暗号装置。
【０１２３】
（付記１１）
情報処理装置によって、所与の数に基づく第１乱数を算出し、対象数値範囲における前記所与の数の分だけの第２乱数に関して、所与の数値区間のうち該第２乱数を含む数値区間が所望の精度にて判定された場合における前記数値区間に含まれている頻度に関する累積頻度を表す頻度情報に基づき、前記第１乱数に応じた前記数値区間を特定する乱数算出方法。
【０１２４】
（付記１２）
所与の数に基づく第１乱数を算出する乱数算出機能と、
対象数値範囲における前記所与の数の分だけの第２乱数に関して、所与の数値区間のうち該第２乱数を含む数値区間が所望の精度にて判定された場合における前記数値区間に含まれている頻度に関する累積頻度を表す頻度情報に基づき、前記第１乱数に応じた前記数値区間を特定する特定機能と
をコンピュータに実現させる乱数算出プログラムが記録された記録媒体。
【産業上の利用可能性】
【０１２５】
上述したような本発明の各実施形態に係る乱数算出装置によって算出された乱数は、上述したような暗号装置の他に、乱数を用いた学習装置、または、モンテカルロ法等の乱数を用いてシミュレーションを実行するシミュレーション装置等にて利用することができる。または、該乱数は、乱択アルゴリズム（Ｒａｎｄｏｍｉｚｅｄ  ａｌｇｏｒｉｔｈｍ）に従い処理を実行する装置等にて利用することができる。
【符号の説明】
【０１２６】
１０１    乱数算出装置
１０２    乱数算出部
１０３    特定部
１０４    頻度情報記憶部
２０１    乱数算出装置
２０３    乱数算出部
２０４    特定部
２０５    第２乱数算出部
２０６    頻度算出部
２０７    頻度情報作成部
２０８    頻度情報記憶部
２１０    暗号装置
２１１    鍵作成部
２１２    暗号化部
２０    計算処理装置
２１    ＣＰＵ
２２    メモリ
２３    ディスク
２４    不揮発性記録媒体
２５    入力装置
２６    出力装置
２７    通信ＩＦ
【図１】
2019021386.tif 000006
【図２】
2019021386.tif 000007
【図３】
2019021386.tif 000008
【図４】
2019021386.tif 000009
【図５】
2019021386.tif 000010
【図６】
2019021386.tif 000011
【図７】
2019021386.tif 000012
【図８】
2019021386.tif 000013
【図９】
2019021386.tif 000014
【手続補正書】
【提出日】令和1年12月18日(2019.12.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
所与の数に基づく第１乱数を算出する乱数算出手段と、
対象数値範囲における前記所与の数の分だけの第２乱数に関して、所与の数値区間のうち該第２乱数を含む数値区間が所望の精度にて判定された場合における前記数値区間に含まれている頻度に関する累積頻度を表す頻度情報に基づき、前記第１乱数に応じた前記数値区間を特定する特定手段と
を備える乱数算出装置。
【請求項２】
前記乱数算出手段は、前記所与の数の分だけの互いに異なる前記第１乱数を算出する
請求項１に記載の乱数算出装置。
【請求項３】
前記乱数算出手段は、暗号鍵を用いて暗号文を作成する所定の暗号化手順に従い、１から前記所与の数までの少なくともいずれかの数値を暗号化することによって、互いに異なる前記第１乱数を算出し、
前記所定の暗号化手順は、異なる数値に対して異なる暗号文を算出する動作である
請求項１または請求項２に記載の乱数算出装置。
【請求項４】
前記頻度情報に基づき複数の前記第１乱数に対する数値区間を特定する場合に、前記特定手段は、前記累積頻度が前記第２乱数を超える前記数値区間を特定する
請求項１乃至請求項３のいずれかに記載の乱数算出装置。
【請求項５】
前記乱数算出手段は、前記所定の暗号化手順に従い、前記暗号鍵を用いて、１から前記所与の数までの自然数を暗号化することによって、複数の前記第１乱数を算出し、
前記特定手段は、複数の前記第１乱数に関して、それぞれ、前記数値区間を特定する
請求項３に記載の乱数算出装置。
【請求項６】
前記第２乱数を含む前記数値区間を前記所望の精度にて特定し、前記数値区間に関する前記頻度を算出する頻度算出手段と、
前記頻度に関する前記累積頻度を求め、求めた前記累積頻度を表す前記頻度情報を作成する頻度情報作成手段と
をさらに備える請求項１乃至請求項５のいずれかに記載の乱数算出装置。
【請求項７】
所定の確率分布に従う前記第２乱数を前記所望の精度にて算出する乱数算出手段
をさらに備える請求項６に記載の乱数算出装置。
【請求項８】
請求項１乃至請求項７のいずれかに記載の乱数算出装置と、
前記乱数算出装置によって特定された前記数値区間を表す情報を暗号鍵として作成する鍵作成手段
を備える暗号装置。
【請求項９】
情報処理装置によって、所与の数に基づく第１乱数を算出し、対象数値範囲における前記所与の数の分だけの第２乱数に関して、所与の数値区間のうち該第２乱数を含む数値区間が所望の精度にて判定された場合における前記数値区間に含まれている頻度に関する累積頻度を表す頻度情報に基づき、前記第１乱数に応じた前記数値区間を特定する乱数算出方法。
【請求項１０】
所与の数に基づく第１乱数を算出する乱数算出機能と、
対象数値範囲における前記所与の数の分だけの第２乱数に関して、所与の数値区間のうち該第２乱数を含む数値区間が所望の精度にて判定された場合における前記数値区間に含まれている頻度に関する累積頻度を表す頻度情報に基づき、前記第１乱数に応じた前記数値区間を特定する特定機能と
をコンピュータに実現させる乱数算出プログラム。
【国際調査報告】
2019021386.tif 000015
2019021386.tif 000016
2019021386.tif 000017
2019021386.tif 000018