(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-03-31
(54)【発明の名称】乱数が所定の閾値より大きいか小さいかを判定するためのコンピュータ実装方法
(51)【国際特許分類】
G06F 7/02 20060101AFI20230324BHJP
G06F 7/58 20060101ALI20230324BHJP
【FI】
G06F7/02
G06F7/58 620
G06F7/58 680
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022545406
(86)(22)【出願日】2021-01-28
(85)【翻訳文提出日】2022-09-16
(86)【国際出願番号】 EP2021052019
(87)【国際公開番号】W WO2021152034
(87)【国際公開日】2021-08-05
(32)【優先日】2020-01-28
(33)【優先権主張国・地域又は機関】EP
(81)【指定国・地域】
(71)【出願人】
【識別番号】522296549
【氏名又は名称】キューサイド テクノロジーズ エス.エル.
(71)【出願人】
【識別番号】522296550
【氏名又は名称】ファンデシオ インスティテュート デ サイエンシス フォトニクス
(74)【代理人】
【識別番号】110001416
【氏名又は名称】弁理士法人信栄事務所
(72)【発明者】
【氏名】アベラン サンチェス、カルロス
(72)【発明者】
【氏名】マルティネス サアベドラ、ホセ ラモン
(72)【発明者】
【氏名】テベンヨハンス、フェリックス
(57)【要約】
乱数が所定の閾値より大きいか小さいかを判定するためのコンピュータ実装方法であって、方法が、乱数および閾値をビット・シーケンスとして表すことと、乱数を表すビット・シーケンスと閾値を表すビット・シーケンスをビット単位のベースでコンパレータによって比較することと、を包含し、それにおいて比較は、乱数を表すビット・シーケンスの最上位ビットと閾値を表すビット・シーケンスの最上位ビットとの比較から開始し、それらのビットが等しくない場合には乱数が閾値より大きいか、またはそれより小さいと判定し、それらのビットが等しいときには、乱数を表すビット・シーケンス内の直後に続くビットと閾値を表すビット・シーケンス内の直後に続くビットとを比較し、この比較が、乱数を表すビット・シーケンス内および閾値を表すビット・シーケンス内において等しくない最初のビットに到達するまで、またはすべてのビットが比較され、等しいとわかるまで反復される。
【特許請求の範囲】
【請求項1】
乱数が所定の閾値より大きいか小さいかを判定するためのコンピュータ実装方法であって、
前記方法が、前記乱数および前記閾値をビット・シーケンスとして表すことと、
前記乱数を表す前記ビット・シーケンスと前記閾値を表す前記ビット・シーケンスをビット単位のベースでコンパレータによって比較することと、
を包含し、
前記比較は、前記乱数を表す前記ビット・シーケンスの最上位ビットと前記閾値を表す前記ビット・シーケンスの最上位ビットとの比較から開始し、それらのビットが等しくない場合には前記乱数が前記閾値より大きいか、またはそれより小さいと判定し、それらのビットが等しいときには、前記乱数を表す前記ビット・シーケンス内の直後に続くビットと前記閾値を表す前記ビット・シーケンス内の直後に続くビットとを比較し、この比較が、前記乱数を表す前記ビット・シーケンス内および前記閾値を表す前記ビット・シーケンス内において等しくない最初のビットに到達するまで、またはすべてのビットが比較されて、等しいとわかるまで反復される、コンピュータ実装方法。
【請求項2】
すべてのビットが等しいと判明された場合には、前記乱数と前記所定の閾値がまったく同一であることが決定される、請求項1に記載の方法。
【請求項3】
前記乱数が前記閾値より小さいか、またはそれと等しいと判明された場合には、前記乱数が破棄され、新たな乱数を用いて前記比較が反復されるか、または、前記乱数が前記閾値より大きいか、またはそれと等しいと判明された場合には、前記乱数が破棄され、新たな乱数を用いて前記比較が反復される、請求項1または2に記載の方法。
【請求項4】
前記方法は、さらに、アルゴリズムによる乱数発生器または物理的な乱数発生器を用いて前記乱数を生成することを包含する、請求項1乃至3のいずれかに記載の方法。
【請求項5】
前記比較は、前記乱数が生成される間に行われる、請求項4に記載の方法。
【請求項6】
前記乱数は、ビット単位のベースで生成され、前記乱数の第1のビットの生成と、その後の前記乱数の第2のビットの生成とを包含するが、それにおいて、前記第1のビットは、前記第2のビットより上位である、請求項5に記載の方法。
【請求項7】
前記第1のビットが生成された後であり、かつ前記第2のビットが生成される前に、前記第1のビットが、前記閾値の対応する上位ビットと比較される、請求項6に記載の方法。
【請求項8】
前記第1のビットが、前記閾値の前記対応する上位ビットより小さいことが決定された場合には、前記乱数が前記閾値より小さいことが決定され、前記第1のビットが、前記閾値の前記対応する上位ビットより大きいことが決定された場合には、前記乱数が前記閾値より大きいことが決定される、請求項7に記載の方法。
【請求項9】
前記第2のビットは、前記第1のビットが前記閾値の前記対応する上位ビットより大きいか、またはそれと等しいことが決定された場合に生成されるか、あるいは前記第2のビットは、前記第1のビットが前記閾値の前記対応する上位ビットより小さいか、またはそれと等しいことが決定された場合に生成される、請求項8に記載の方法。
【請求項10】
前記乱数が前記所定の閾値より小さくなるか、または等しくなることが決定された場合に、前記乱数の前記生成が中止されて、新たな乱数が生成されるか、または、前記乱数が前記所定の閾値より大きくなるか、または等しくなることが決定された場合に、前記乱数の前記生成が中止されて、新たな乱数が生成される、請求項8または9に記載の方法。
【請求項11】
前記方法は、さらに、データの暗号化、データ送信の暗号化、数値シミュレーションのうちの少なくとも1つにおいて、前記乱数が前記所定の閾値より大きくなることが決定された場合に前記乱数を使用することを包含する、請求項1乃至10のいずれかに記載の方法。
【請求項12】
コンパレータを包含するプロセッシング・デバイスによって実行されたときに、前記コンピュータに、請求項1乃至11のいずれかに記載の方法を行わせるコンピュータ実行可能インストラクションを包含するコンピュータ可読ストレージ媒体。
【請求項13】
プロセッサと、前記プロセッサによるアクセスが可能なメモリと、コンパレータとを包含するコンピューティング・システムであって、請求項1乃至11のいずれかに記載の方法を実行するべく適合されたコンピューティング・システム。
【請求項14】
前記コンピューティング・システムは、さらに、乱数を生成するためのアルゴリズムによるか、または物理的な乱数発生器を包含し、それにおいて前記コンピューティング・システムは、前記乱数を表すビット・シーケンスを、前記コンパレータへ提供するべく適合されている、請求項13に記載のコンピューティング・システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、請求項1に従った乱数が所定の閾値より大きいか小さいかを判定するためのコンピュータ実装方法をはじめ、請求項12に従ったコンピュータ可読ストレージ媒体、および請求項13に従ったプロセッサと、メモリと、コンパレータを伴うコンピューティング・システムに関する。
【背景技術】
【0002】
第1の数と第2の数とを互いに比較するための方法は、広く従来技術において周知である。現今、システムは、一般に第1の数からの第2の数の減算を、第1の数を超えるか否か(その場合、第1の数からの減算が負の値をもたらすことになる)または第1の数より小さいか否か(その場合、第1の数からの減算が正の数をもたらすことになる)を決定するために行う。状況によっては、第1の数が閾値と呼ばれ、第2の数は、当該閾値と比較されるべき任意の数であり得る。本発明の状況においては、この第2の数が乱数である。
【0003】
上に説明されている方法は、与えられた数が閾値をどのくらい超えたか、または超えていないかについての情報も提供することから、信頼性があり、確定的な結果を提供する。
【0004】
これらの方法は、また、その種の閾値との乱数の比較という面においても有用である。物理シミュレーション等の数値シミュレーションのためには、具体的な閾値を超えるか、または超えない乱数が極めて重要になる。
【0005】
残念ながら、特に、乱数という面からみると、特に、長い乱数(たとえば、128ビット分解能の方法を考える)の場合の減算を行うためには有意のコンピュータ・リソースを利用する必要があることから、これらの方法がボトルネックを呈する。
【発明の概要】
【発明が解決しようとする課題】
【0006】
したがって、周知の従来技術から出発すると、本発明によって解決されることになる問題は、所定の閾値より乱数が大きいか小さいかを判定するためのコンピュータ実装方法であって、従来技術に従った伝統的な方法より高速であり、かつ必要とするコンピューティング・リソースがより少ない方法を提供することである。
【課題を解決するための手段】
【0007】
この問題は、独立請求項1に従ったコンピュータ実装方法をはじめ、請求項12に従ったコンピュータ可読ストレージ媒体、および請求項13に従ったコンピューティング・システムによって解決される。本発明の好ましい実施態様は、従属請求項の中に提供されている。
【0008】
本発明に従った乱数が所定の閾値より大きいか小さいかを判定するためのコンピュータ実装方法は、前記乱数および前記閾値をビット・シーケンスとして表すことと、前記乱数を表す前記ビット・シーケンスと前記閾値を表す前記ビット・シーケンスをビット単位のベースでコンパレータによって比較することと、を包含し、それにおいて前記比較は、前記乱数を表す前記ビット・シーケンスの最上位ビットと前記閾値を表す前記ビット・シーケンスの最上位ビットとの比較から開始し、それらのビットが等しくない場合には前記乱数が前記閾値より大きいか、またはそれより小さいと判定し、それらのビットが等しいときには、前記乱数を表す前記ビット・シーケンス内の直後に続くビットと前記閾値を表す前記ビット・シーケンス内の直後に続くビットとを比較し、この比較が、前記乱数を表す前記ビット・シーケンス内および前記閾値を表す前記ビット・シーケンス内において等しくない最初のビットに到達する(わかる)まで、またはすべてのビットが比較され、等しいとわかるまで反復される。
【0009】
本発明に関して言えば、入力を受け取りかつ出力を提供するべく適合され、それにおいて入力が出力とまったく同一ではなく、したがって、出力を獲得するために入力に対する何らかの種類の処理が求められる任意のシステムを、コンピューティング・システムまたはコンピュータ・システムまたはプロセッシング・システムと呼ぶことになる。本発明によれば、ラップトップ、スマートフォン、およびこれらの類も含まれる一般に知られるコンピュータもまた、上記の用語によって囲い込まれるが、これに関して本発明が限定されないことを強調しておく。実際、プロセッシング・デバイス(または、同義的にコンピュータまたはコンピューティング・システム)がプロセッサまたは類似の構成要素を含む必要性さえない。本発明が、基本的に何らかの種類のコンパレータが存在することのみを要求することから、そのほかのハードウエアおよび/またはソフトウエア・エンティティがプロセッシング・システムに必然的に備わることは意図されていない。
【0010】
この方法は、従来技術の意思決定プロセスを、与えられたビットが別のビットより小さいか、またはそれより大きいかまたはそれと等しいかを判定するという面において『単純な』イエスまたはノーの判定にまで削る。そのようにすることによって、また乱数の最上位ビットから開始することによって、乱数が所定の閾値より大きいか小さいかの判定が、通常は、それらの閾値および乱数両方のすべてのビットが処理される前に行うことが可能であるため、その乱数が閾値より大きいか小さいかの判定に必要とされる時間を有意に短縮することが可能である。乱数が閾値をいくら超えるか、またはそれが閾値をいくら下回るかについての正確な値はまったく無関係である場合においては、これがより少ないコンピューティング・リソースを用いて意図されている結果(すなわち、判定)を提供し、かつ必要とされるコンピューティング時間を短縮する。それにより、処理のために必要とされる時間、および処理のために必要とされるコンピューティング・リソースの両方において大量の乱数の処理を向上させることが可能である。
【0011】
上に述べられている本発明について、比較がビット単位のベースでのみ行われることから、乱数を表す完全なシーケンスがコンパレータに提供されるという点においてその乱数がすでに『完全』なものとなっている必要性がないことに注意が必要である。したがって、上では『乱数』と呼んでいるが、コンパレータが乱数と閾値のビット単位の比較を行うだけであることから、乱数という表現が、コンパレータへ提供される完全な乱数という表現である必要はない。同じように、コンパレータが乱数と所定の閾値をビット単位のベースで比較するだけであることから、閾値がコンパレータへ完全に(ビット・シーケンス全体が提供されるという意味において)提供される必要性もない。
【0012】
それによって、第1の数を第2の数から減ずるときに一般に生じるコンピューティング・システム内におけるデータ転送もまた、最小限に維持することが可能である。さらにまた、判定が行われるまでだけランダムなビットの生成が必要とされ、したがって、ランダムなビットの完全なセットを(したがって、システムのリザーバからより大きなエントロピを)必要としないことから、これがシステムの平均エントロピ消費を減ずる。これは、ランダムなビットおよび数の物理的な発生器の使用時に特に関係がある。
【0013】
1つの実施態様においては、すべてのビットが等しいと判明された場合に、前記乱数と前記所定の閾値がまったく同一であることが決定される。
【0014】
本発明の方法には、すべてのそのほかの数から、所定の閾値を超えるか、または超えない数を分離することが通常は意図されているが、それぞれの決定において、乱数と閾値が等しい場合を(たとえば、これらの値を破棄するか、またはさらにそれらを使用するかのいずれかのために)含むことも意図することが可能である。
【0015】
さらに、前記乱数が前記閾値より小さいか、またはそれと等しいと判明された場合には、前記乱数が破棄され、新たな乱数を用いて前記比較が反復されるか、または、前記乱数が前記閾値より大きいか、またはそれと等しいと判明された場合には、前記乱数が破棄され、新たな乱数を用いて前記比較が反復されることも提供することが可能である。
【0016】
数値シミュレーションまたは暗号化のために、所定の閾値を超えるか、または超えない乱数が関係することがあり得る。この説明のさらなる面において、特に示されていない限り、所定の閾値を超える乱数を参照する。しかしながら、この手法は、所定の閾値を下回る乱数が必要とされる場合についても、当然のことながら同じ態様で適用することが可能である。
【0017】
いずれの場合であっても、このビット単位の比較において決定がすでに行われた後に所定の閾値を超える(または、超えない)乱数を破棄することによって、有意に短縮された時間において乱数の大きなセットの処理を達成することが可能であり、また、それによって、たとえばシミュレーションまたは暗号化という面における、閾値を超える(または、超えない)乱数のさらなる処理の速度も向上する。
【0018】
この方法は、さらに、アルゴリズムによる乱数発生器または物理的な乱数発生器を用いて前記乱数を生成することを包含することが可能である。物理的な乱数発生器は、量子乱数発生器を好ましくは包含し得る。また、そのほかの、(真に)ランダムな物理的プロセスを使用する物理的な乱数発生器もまた、採用してもよい。
【0019】
これとともに、すでに周知のアルゴリズムによる乱数発生器または物理的な乱数発生器のいずれかを使用し、『オン・ザ・フライ』のランダム選択、たとえば、2値のイエスまたはノーの選択という面において本発明の方法を使用することが、閾値および乱数に関して任意の大きな分解能を伴って可能である。アルゴリズムによる乱数発生器は、通常、初期値、すなわちいわゆるシード(日付、時刻、またはそのほかの任意の値)を使用し、コンピュータ実装されるアルゴリズムを用いて乱数を生成する。しかしながら、これらの乱数は、真の乱数ではなく擬似乱数に過ぎない。物理的な乱数発生器は、たとえば、熱力学的プロセスまたは、レーザ動作閾値の近傍、またはそのすぐ上でレーザ・ドライブを使用するランダムに生成されたレーザ・ビームの干渉のような量子物理プロセス等の物理プロセス、またはそのほかの任意の手段、たとえば放射性システムの崩壊の測定等の手段を用いて乱数を生成するものを考える。これらのプロセスは、予測することが不可能であり、また(アルゴリズムによる乱数発生器の使用時の場合のような)事象の予測が可能なシーケンスに従わないことから純粋にランダムである。したがって、これらの乱数は、真にランダムであり、より信頼性がある。
【0020】
前記比較が前記乱数の前記生成の間に行われることもまた提供され得る。
【0021】
したがって、この比較を用いて、たとえば乱数の生成を監視し、それらが要件(たとえば、それらが所定の閾値を超えるか否か、または超えないか否か)を満たすか否かを全体の乱数が生成される前に決定することが可能である。このプロセスは、さらに、乱数を生成するプロセスのコントロールをはじめ、ランダム・ストリームのオン・ザ・フライの統計的テストの実施に都合よく使用することが可能である。
【0022】
1つのより具体的な実現においては、前記乱数がビット単位のベースで生成され、前記乱数の第1のビットの生成と、その後の前記乱数の第2のビットの生成とを包含するが、それにおいて、前記第1のビットは、前記第2のビットより上位である。
【0023】
前記乱数が生成される間における前記比較の実施とともに、これは、前記乱数の生成のビット単位での監視を可能にし、前記第1のビットと前記第2のビットの生成の間に比較が生じることが可能である。
【0024】
1つの実施態様によれば、前記第1のビットが生成された後であり、かつ前記第2のビットが生成される前に、前記第1のビットが、前記閾値の対応する上位ビットと比較されることが提供され得る。
【0025】
これは、単一の乱数の生成においては多少の遅延に帰するが、それにもかかわらず、各乱数の生成がビット単位のベースで監視され、その間に要件(たとえば、閾値を超えるか、または超えない)が満たされたか否かを決定することが可能であるため、大量の乱数(たとえば、数十億の乱数)を生成するための時間を短縮することが可能である。
【0026】
この実施態様において、前記第1のビットが、前記閾値の前記対応する上位ビットより小さいことが決定された場合には、前記乱数が前記閾値より小さいことが決定され、前記第1のビットが、前記閾値の前記対応する上位ビットより大きいことが決定された場合には、前記乱数が前記閾値より大きいことが決定される。
【0027】
より具体的な場合においては、前記第2のビットは、前記第1のビットが前記閾値の前記対応する上位ビットより大きいか、またはそれと等しいことが決定された場合に生成されるか、あるいは前記第2のビットは、前記第1のビットが前記閾値の前記対応する上位ビットより小さいか、またはそれと等しいことが決定された場合に生成される。
【0028】
それによって、前記比較の結果が、前記乱数のさらなる生成のコントロールのために直接使用される。
【0029】
それに加えて、1つの実施態様においては、前記乱数が前記所定の閾値より小さくなるか、または等しくなることが決定された場合に、前記乱数の前記生成が中止されて、新たな乱数が生成されるか、または、前記乱数が前記所定の閾値より大きいか、または等しいことが決定された場合に、前記乱数の前記生成が中止されて、新たな乱数が生成される。
【0030】
これとともに、要件(たとえば、閾値を超えるか、または超えない)に従う完全な乱数だけが生成され、それによって、前記要件をすでに満たしたか、または失敗したかのいずれの場合においても乱数の生成のためのコンピューティング・リソースが有意に節約される。全体として、物理的なプロセスを使用した乱数の生成を考えるとき、本発明に従ったビット単位の比較を使用する乱数の生成を監視し、コントロールするこの方法は、コンピューティング・リソースを節約し、かつ同時に必要とされる乱数を生成するための時間を短縮する。
【0031】
前記方法は、さらに、データの暗号化、データ送信の暗号化、数値シミュレーションのうちの少なくとも1つにおいて、前記乱数が前記所定の閾値より大きくなることが決定された場合に前記乱数を使用することを包含することが可能である。
【0032】
これとともに、インターネットを介した要注意データのためのデータ送信、または大きなシステムの物理シミュレーションのような数値シミュレーションにおける使用等の、高生成レートにおいて乱数を使用するプロセス内で生成された乱数を使用することが可能である。
【0033】
本発明に従ったコンピュータ可読ストレージ媒体は、コンパレータを包含するコンピュータによって実行されたときに、前記コンピュータに、先行する実施態様のいずれかに従った方法を行わせるコンピュータ実行可能インストラクションを包含する。
【0034】
このコンピュータ可読ストレージ媒体とともに、本発明の方法の利点を、コンピューティング・システムに適用することが可能である。
【0035】
本発明に従ったコンピューティング・システムは、プロセッサと、前記プロセッサによるアクセスが可能なメモリと、コンパレータとを包含し、それにおいて前記コンピューティング・システムは、先行する実施態様のいずれかに従った方法を実行するべく適合される。
【0036】
このコンピューティング・システムは、本発明の方法の利点を使用する。
【0037】
これに関して言えば、前記コンピューティング・システムが、さらに、乱数を生成するためのアルゴリズムによるか、または物理的な乱数発生器を包含することが提供され、それにおいて前記コンピューティング・システムが、前記乱数を表すビット・シーケンスを、前記コンパレータへ提供するべく適合されている。
【0038】
これとともに、本発明の方法の利点が、物理的な乱数発生器またはアルゴリズムによる乱数発生器と、必要に応じて組み合わされる。
【図面の簡単な説明】
【0039】
【
図1】1つの実施態様に従った方法の略図的なフローチャートである。
【
図2】さらなる実施態様に従った方法のプロセス・フローを図解したさらなるフローチャートである。
【
図3】本発明に従った方法を実装することができるコンピューティング・システムを図示した概略図である。
【発明を実施するための形態】
【0040】
図1は、所定の閾値より乱数が大きいか小さいかを判定するための方法100において行われるステップを示した略図的なフローチャートである。この方法は、任意の適切なコンピューティング・システム上において実装することができ、かつCD、フラッシュ・ドライブ、またはそのほかの任意の適切なストレージ媒体等のコンピュータ可読ストレージ媒体上にエンコード済みの形式で提供することも可能である。対応するコンピューティング・システムの一例が
図3に提供されている。
【0041】
以下に述べる方法については、閾値値が存在していることが前提となっている。この閾値は、自然数または0より大きい実数であると考えられ得る。この方法は、任意の値を有することは可能であるが、大きな数(128ビット精度の場合の2128台)の場合においてもっとも利がある。閾値値は、この方法を適用するコンピューティング・システムに利用可能であり、ユーザまたは、本発明のいずれかの実施態様に従った方法の結果とし得る乱数を使用するコンピューティング・プログラムによって提供されてもよい。
【0042】
閾値は、任意の数であり得て、たとえばそれ自体を、ランダムに生成されるが、少なくとも2つの乱数が利用される処理の少なくとも1つの段階のために固定される数とすることが可能である。閾値値が変化し、各乱数がそれぞれの閾値値と比較されることになるといったそのほかの形の具現化も考えることが可能である。しかしながら以下の説明においては、固定された閾値値を前提とする。しかしながら当業者は、それぞれの教示を変化する閾値値に対しても容易に適用することが可能である。
【0043】
いずれの場合においても、上に示されているとおり、強調されているコンピューティング・システムには閾値値がすでに利用可能であることを前提とする。
【0044】
これに関して言えば、方法100は、ステップ101において乱数の獲得を開始する。乱数は、任意の適切な態様において獲得することが可能である。具体的に述べれば、乱数の生成または獲得のために、乱数発生器を使用することが可能である。他方においては、すでに明確な目的の下に生成済みの乱数を、それぞれの方法100を行おうとしているコンピューティング・システムへ提供することも可能である。たとえば、以前に生成した乱数(たとえば、各乱数が128ビット長の数である1GBの量の乱数等)を外部ストレージ媒体から、または無線手段もしくはケーブル接続等のデータ転送手段を介して、またはインターネットを介して、方法100を行うためのコンピューティング・システムへ提供することが可能である。乱数発生器が使用される場合には、乱数がすでに完全に作り出されているか、または計算されており、その後、ステップ101において獲得され得る形で提供される態様にこの方法が限定されない。実際、この方法は、ステップ101において、ビット単位の態様で乱数が獲得されることも可能にする。それが、乱数に対応するビットのシーケンスをさらなる使用のために獲得するステップ102において生じる結果である。乱数が人間可読乱数として提供される場合、すなわちバイナリ・コードの形式でない場合においては、数をビット・シーケンスに変換するための一般に知られているテクニックを用いて、この人間可読乱数をビット・シーケンスで表すことが可能である。乱数発生器の使用によって乱数が『オン・ザ・フライ』で生成される場合においては、ビット単位の態様でこの生成が行われること、すなわち乱数の各ビットが別々に生成されることが好ましい。このようにして、ステップ102において、乱数をビット毎ベースで(すなわち、乱数がすでに完全に作成済みとなっていない)提供することが可能である。
【0045】
完全な乱数がすでに獲得済みであり、かつ相応じて完全なビット・シーケンスがすでに獲得済みであるか否かとは関係なく、この方法の次のステップは、閾値および乱数の対応するビット・シーケンスのうちの単一のビットだけを、ビット単位の比較を行うために使用する。
【0046】
ステップ103においては、乱数の最上位ビット(すなわち、ビット・シーケンスの形式でのそれの表現)と閾値の最上位ビット(すなわち、ビット・シーケンスの形式でのそれの表現)が比較される。1ビット・コンパレータがこの比較の実行にもっとも適しており、かつもっとも効率的であることから、好ましくはそれによってこの比較が実施される。しかしながら、本発明がその種の1ビット・コンパレータに限定されることはなく、比較を行うための任意のそのほかの手段も同様に使用することが可能である。
【0047】
この比較ステップ103の間に、コンパレータは、乱数の最初の最上位ビットと閾値の最初の最上位ビットが等しいか否かを決定する(110)。ステップ110における決定が、それらは等しくない(111)とするものであった場合には、ステップ121において、乱数の方が閾値より大きい(又は小さい)と決定する。
【0048】
最上位ビット同士が等しくないとする状態(ステップ121)は、2つの事例によってだけ獲得されることが可能である。第1の事例においては、乱数の最上位ビットが1となり、閾値の最上位ビットが0となる。この場合においては、乱数がどのようなものであっても、また続くすべてのビットとは完全に独立して閾値より大きくなる。他方は、乱数の最上位ビットが0となり、閾値の最上位ビットが1となる状態である。この場合においては、乱数が確実に閾値より小さい。
【0049】
次のステップ122は、オプションであるが、それにおいては、具体的な要件が満たされたか否かを決定することが可能である。たとえば、方法100については、閾値より大きい乱数をさらに処理することだけが意図されている。したがって、この要件は、実際に閾値より大きいことが決定された乱数についてだけ満たされることになる。閾値以下の乱数がこの要件を満たすことはない。その逆もまた、当然のことながら可能であり、すなわち、たとえば、さらなる処理のために乱数が所定の閾値より小さくなければならないことを要求することは可能である。しかしながら、上に示されているとおり、この要件のステップは、乱数の方が閾値より小さい、または大きいことが決定されるステップ121においてすでに方法100が終了したとし得るように、オプションであり、かつ実装される必要はない。
【0050】
しかしながら、ステップ122が提供される場合には、2つの判定が可能である。いずれであっても、ステップ123において要件が満たされたことが決定される。その後、ステップ125において乱数の処理が継続される。乱数のさらなる処理は、たとえば、それぞれの数を数値シミュレーション、または暗号化データ転送、または暗号化データの中で使用することを包含することが可能である。そのほかの手段または処理も同様に企図することが可能である。
【0051】
122において、要件が満たされていないことが決定された場合(124)には、その乱数をステップ126において破棄することが可能であり、かつ新たな乱数を獲得することが可能であり、この方法がステップ101から再び始める結果に帰することになる。新たな乱数を獲得せずに(残りがないか、または処理の終了が意図されているため)単にこの方法を終了することも可能である。
【0052】
ステップ126が、また対応するこの方法を終了するステップが、ステップ122における意思決定を伴うことなくステップ121の直後に続くことも可能である。
【0053】
乱数および閾値の最初の最上位ビット同士が等しいか否かを決定するステップ110における比較に戻るが、ここには別のオプションが存在する。ステップ112においては、最初の上位ビットについて、それらが等しいことが決定され得る。これがステップ112において決定された場合には、乱数が閾値と等しいか否か、または等しくないか否かに関する判定を行うことが不可能である。これは、それらの最初の最上位ビットの比較だけに基づいて2つの数が等しいと決定することが不可能であることによる。それらのそれぞれの最上位ビットが等しくない場合にだけ、それらが等しくないと判定することが可能である。その場合には、ステップ131において、比較のために残っているビットがあるか否かを決定する。実際に乱数がより長いほどこの利点がより重要になることから、通常は、単一のビットだけによって構成される乱数が本発明の方法とともに使用されることがないため、方法100が、ステップ103において最初の最上位ビットから開始したときには、この問いに対する応答が肯定となることがもっともありがちである。
【0054】
しかしながら、議論のため、互いに比較される最初の最上位ビットのためにもこのステップが含まれていることが仮定されている。残っているビットがあると決定された場合には、次の上位ビットが採用され、乱数および閾値のそれぞれのビットがステップ132において互いに比較される。このことは、乱数の最初の最上位ビットr1と閾値の最上位ビットt1を比較したこの方法の以前の実行に照らしてみると、今度はビットr2とt2が比較されることを意味する。概して言えば、ビットriとtiを比較した後は、次の回においてビットr(i+1)とt(i+1)を比較することになる。
【0055】
ステップ110に続いて、再びこれらのビットについての決定が行われる。この場合においても、これが、これらのビットが等しい(ステップ112)またはそれらが等しくない(ステップ111)という判定結果を導くことが可能である。それらが等しくない場合には、ステップ111に続く処理が行われる。実際、次の上位ビット同士が等しくないと決定された場合には、乱数と閾値が異なることを即座に決定することが可能である。
【0056】
これらの、次の上位ビットもまた等しい場合(ステップ112)には、まだビットが残っていれば(ステップ131)、それらのビットが等しいか否かをステップ110において再度決定するために、この方法をステップ132から再び始めてそれらのビットを比較する必要がある。
【0057】
この動作中に、ステップ131において、ビットの残りがないと決定された場合には、ステップ133において、乱数が実際に閾値と等しいと決定することが可能である(2つの数のすべてのビットが等しければ、それらの数は等しい)。
【0058】
その場合においては、ステップ134へ進み、新たな乱数を採用することが可能であり、オプションとして、閾値に等しいと見做された乱数は、破棄することが可能である。
【0059】
しかしながら、たとえば、乱数のさらなる処理のための要件に応じて、所定の閾値より小さくない乱数が使用されることになる場合もあり得る。その種の場合においては、閾値より大きいか、またはそれと等しい乱数がさらに使用されることになる(ステップ125に類似)。しかしながら
図1のフローチャートには、この分岐が明示的に示されていない。いずれの場合においても、ステップ122に対応するさらなるステップが含まれている場合には、ステップ133の後のさらなる処理は、ステップ125または126における処理に等しいとすることが可能である。
【0060】
上に示されているとおり、その種の要件のうちの1つを、少なくとも閾値より小さくない乱数をさらに使用することとすることが可能である。しかしながら、閾値に等しいと決定された乱数を破棄することも可能である。これは、特に、乱数が暗号化のために使用される場合に有利となり得る。
【0061】
すでに上に示されているとおり、
図1に従った方法については、比較が、たとえば対応する1ビット・コンパレータによってビット単位ベースで生じることから、すでに完全な乱数がステップ101および102において獲得されているか否かは無関係である。このことは、乱数がそのままの形で(相応じてビット・シーケンス全体が)提供されて獲得される方法を可能にする一方、乱数またはそれの対応するビット・シーケンスが、最初の最上位ビットからスタートしてビット毎ベースで獲得される方法も可能にする。
【0062】
乱数がすでに完全に利用可能となっている場合には(たとえば、それがあらかじめ作成済みであることから)、完全なビット・シーケンスを獲得することと、完全なビット・シーケンスを獲得せずに、このシーケンスの最初の最上位ビットだけを獲得することとを比較していずれか一方が有利であるということはない。しかしながら、乱数がまだ完全に作成されていない場合においては、
図1に関して説明されている方法を適宜用いて乱数の生成をコントロールすることが可能である。たとえば、
図1に述べられている方法を使用し、閾値を超える(または、たとえば、それを超えない)さらなる処理のための乱数を選択することだけによって、バイアスなしの乱数発生源からバイアスされた数の分布を生成することが可能である。
【0063】
図2の実施態様においては、乱数のために生成された各ビットをコンパレータ(または、そのほかの適切な手段)へ提供し、それぞれの比較を行って、この比較の結果に基づいてこの乱数の2番目のビットを獲得するか否かを判定することが有利となり得る。これのさらなる詳細を、
図2に関して説明する。
【0064】
【0065】
この方法は、結局、乱数の最初のビットが作成されるステップ201を伴って開始することになる。この場合においても、それぞれの方法を実行するコンピューティング・システムに対して閾値がすでに完全に利用可能となっていることが前提となる。閾値値およびそれのそれぞれのビット・シーケンスの獲得または作成は、したがって、ここではこれ以上考察することはなく、任意の態様で行うことが可能である。
【0066】
乱数の作成は、すでに上に説明されているとおり、任意の適切な方法で、たとえばアルゴリズムによる乱数発生器または物理的な乱数発生器を用いて行うことが可能である。これに関して本発明が限定されることはない。しかしながら、それぞれの乱数発生器は、好ましくは、各ビットの生成とともに乱数の生成を停止し、それぞれの比較の結果を待機することが可能となるように、ビット・シーケンスの形で乱数を作成する能力を有する必要がある。これは、任意かつランダムな態様で順次0および1の値を生成するだけの乱数発生器を使用することによって達成することが可能である。
【0067】
乱数のこの最初のビットが生成されると、この最初のビットがその乱数の最上位ビットと見做されて、ステップ202において、閾値の最初のビット(すなわち、最上位ビット)と比較される。
図1に述べられているプロセスが、乱数および閾値のビットのビット単位での比較を行うことから、この比較は、
図1に関してすでに述べられているとおりの方法のうちの1つに従って実行される。
【0068】
ステップ203および205において、乱数の最初のビットが閾値の最初のビットと等しくないと決定された場合には、生成されようとしている乱数が閾値とは異なることが(暗黙的に)決定される。それに該当する場合には、
図1に関してすでに説明されているさらなるステップを含めることが可能である。このステップは、ステップ251において具体的な要件が満たされたか否かを決定することを包含することが可能である。この要件を、たとえば、生成されるべき乱数が閾値より大きく(または、より小さく)なければならないとすることが可能である。この先の説明のために、ここでは、生成されるべき乱数が閾値より大きい必要があるとする要件を前提とする。これがそれに該当すると決定された場合においては(ステップ252は、乱数の最上位ビットが1であり、かつ閾値の最上位ビットが0であるときにだけ該当することになる)、ステップ254において乱数の生成を続ける。これは、この方法の終了時に生成される乱数が閾値より大きいことが、最初の最上位ビットの比較からすでに既知となったことから、さらなる比較ステップ202を使用することなく続けることが可能である。
【0069】
要件が満たされなかった場合(ステップ253)においては、ステップ260においてその乱数を破棄することが可能であり、これは、その乱数を構成することになる完全なビット・シーケンスの作成は継続されないが、可能性として新たな乱数の生成がステップ261において可能であることを意味する。この新たな乱数の生成は、通常、乱数発生器を用いてさらなるビットを単に生成することと、生成されたこのさらなるビットをステップ201において『新たな乱数』のための『最初のビット』として使用することを包含することになる。
【0070】
この方法のステップ202に戻るが、乱数の最初のビットが閾値の最初のビットと等しいか否かの決定には、別のオプションが存在する。ステップ204において、これら2つのビットが実際に等しいと決定された場合には、ステップ241において(オプション)生成のために残されているビットが存在するか否かが決定される。それまでに1つのビットだけしか作成されていなければ、通常、さらなるビットが生成されることになる場合に該当する。いずれの場合においても、ステップ241におけるこの決定は、生成されるべき乱数のビット長が、通常はすでにシステムに既知であるという事実に基づいて行われる。たとえば、タスクを、128ビットの長さを有する乱数のシーケンスの生成とすることが可能である。すでに作成されたビットが1ビットだけである場合には、作成される必要があるビットがまだ127ある。この方法がある程度まですでに進み、たとえば、所定の乱数のために115ビットがすでに作成済みとなっている場合には、作成する必要のあるビット数がより少なくなる。それぞれの乱数のためにすべてのビットが作成済みであれば、ステップ243において、生成のためにさらなるビットは残されていないと決定され、またステップ204において、生成されたその乱数の最後のビットが閾値に等しいとの決定もなされていることから、その乱数は閾値に等しく、その乱数を破棄することが可能である。これは、手前ですでに説明されているステップ260と一致する。
【0071】
ステップ241において、生成されるべきビットがまだ残されていると判定242を伴って決定された場合には、ステップ244において次のビットが生成される。続いて生成されたこの『2番目の』ビット(または、続きのビット)が、その後、閾値の対応するビットと比較される。このことは、たとえば128ビットのうちの97番目のビットが乱数のためにちょうど作成されたところであるとすると、ステップ245においてこのビットが、閾値の対応する97番目のビットと比較されることを意味する。この比較は、ステップ202において行われたとおりの形で行われ、相応じて、この対応するビットが閾値のそのビットに等しいか否かがステップ203との関係で決定される。この場合においても、判定204または205を行うことが可能であり、したがって、この2番目のビットに基づいて、乱数が閾値と異なるか否か(たとえば、より大きい又はより小さい)を決定することが可能である。
【0072】
この判定に基づき、その後、乱数のビットの作成をさらに進めるか、または、たとえば、さらに進めたときに作成されることになる乱数が閾値より小さいことが決定された場合には、この『生成中の乱数』を破棄し、新たな乱数の生成を開始することが可能である。
【0073】
この場合においても、この方法が、生成される乱数が実際により長いほど、特に有利となることに注意する。これは、基本的に、生成された乱数を表すランダム・ビットのシーケンスが閾値より大きいか小さいかの判定が、通常、非常にすばやく行われ得ることによる。実際、多くの場合において、乱数の最初の3、4、または5ビットが生成されたときには、すでにこの判定を行うことが可能となっている。したがって、生成されるべき128ビットの乱数については、5%に満たない量のビットが生成された後には、すでに、その乱数が閾値を超えるか否かを決定することが可能であり、それによって、その閾値を超える(または、超えない)とする条件を満たさない場合には、現在の乱数の生成を停止し、新しい判定のための新たな乱数の生成の開始を可能にする。
【0074】
図3は、限られた数の構成要素を用いて根底をなすコンピューティング・システム300の略図的な図解を示している。この図は、パーソナル・コンピュータ、サーバ、サーバ・ファーム、または任意のそのほかの適切なコンピューティング手段等のコンピューティング・システムを略図的に提供する。このコンピューティング・システムは、少なくとも1つのプロセッサ301を包含するか、または、当然のことながら、複数のプロセッサを包含することも可能である。さらにまた、ハード・ドライブ等のメモリ302がプロセッサに、それぞれのメモリ上にストアされているデータおよびコンピューティング・プログラムにプロセッサがアクセス可能となるように関連付けされている。それに加えてこのコンピューティング・システムには、コンパレータ303、好ましくは1ビット・コンパレータが備えられている。これは、ハードウエアまたはソフトウエアまたはその両方のいずれの形でも実装が可能である。
【0075】
いずれの場合であっても、それぞれのコンピューティング・システム300は、上に説明されている実施態様のうちの少なくとも1つに従った方法を行うべく適合される。この目的のために、メモリ302は、たとえば
図1に述べられている実施態様、または
図2に関連して述べられている実施態様に即した方法を行うためのコンピュータ可読インストラクション(プログラム・コード)を包含している。
【0076】
また、データ転送のための手段304(無線またはケーブル)または別体のデータ・ストレージを取り付けるための手段305等のコンピューティング・システムのさらなる手段も備えることが可能であるが、当業者には一般に周知のことであり、したがって、さらに詳細をここで説明することはしない。
【0077】
上記からわかるとおり、本発明の方法は、非常にわずかな演算を用いて乱数が特定の閾値を超えるか否かの判定を可能にする。原理的には、ここに説明されているプロセスを、生成された乱数が閾値に等しいか、それより大きいか、またはそれより小さいかを最終的に決定するために、最後のビットが決定されるまで(先行するすべてのビットが等しい場合)反復することが可能であるが、より早期に、たとえば最上位ビットだけ、または最初の3つの上位ビットが生成された後にこのプロセスを終了または中止することも可能である。それによって、すでに正しいことが決定されているか、または生成されることになる乱数が確実に閾値より大きくなることがほぼ開始時に決定された場合にだけ、完全な乱数の生成がさらに処理されることの保証が可能である。
【0078】
上記の説明においては、単一の乱数が生成され、それが閾値を超えるか、またはその閾値を超えないかを決定するために単一の閾値に対して比較されることが仮定されていた。しかしながら、これに関して本発明が限定されることはない。たとえば、本発明の概念を、現在作成されている乱数が1を超える数の閾値に対して比較されることになる方法に拡張することも可能である。それらの閾値のそれぞれに対する乱数のビットの比較は、手前に記述されている実施態様のいずれに従っても行うことが可能である。
【0079】
たとえば、n個(nは、1より大きい任意の自然数)の閾値が提供されてもよく、それにおいてそれらの閾値は、対として共通の要素を持たない数を構成するものとする。上に説明されているとおりにビット単位のベースで乱数を生成するときに、乱数を構成するそれぞれの生成されたビットまたは生成されたビット・シーケンスを、生成されたそれぞれのビット毎に各閾値の対応するビット(1つ以上)と比較することが可能である。これによって、それぞれの新しいビットについて、生成されることになる乱数が閾値を超えるか、またはそれが閾値を超えないかの判定(イエスまたはノー)をそれぞれの閾値に対して行うことが可能である。
【0080】
これは、最終的に、単一の乱数の作成だけによってそれぞれの比較から複数の1ビットの判定(イエスまたはノー)を作り出すことを可能にする。たとえば、128ビットの長さの乱数について考えるが、異なる値を有する数十億の閾値に対して妥当に比較することが可能な乱数を計算することが可能であり、それによって128ビットの作成済みの乱数から数十億の判定ビットを作り出すことが可能になり、それにおいては、それぞれの判定を、これらの128ビットのサブセットが作り出された後にだけ行うことが通常は可能になることから、この乱数の128ビットすべてを作成することさえも必要でないこともまた可能である。
【0081】
したがって、最終的に作成が終了した時点で128ビットの長さの数となる乱数のうちの単一のビット、または2もしくは3ビットだけを生成することが、数百または数千またはそれよりさらに多くの判定がすでに行われているとするに充分となり得る。
【0082】
これらの判定は、1つの実施態様においては、乱数のためにすでに生成されているビットを閾値のそれぞれに対して並列に比較することによって少なくとも部分的に並列に行われ、それによって、並列計算の使用時には、すばやい意思決定にも到達する。
【0083】
また、生成されるべき乱数のビットを閾値に対して比較するこのプロセスを用いると、結果としてさらなる情報をもたらさない判定が回避可能になることにも注意が必要である。たとえば、任意の(ただし、固定の)長さ、たとえば128ビットの3つの異なる閾値と、生成される、最終的に完全に生成されたときに同一の長さを有する乱数を考える。
【0084】
この乱数の最初の2ビットが生成された後、この乱数が第1および第2の閾値を超えたとの判定に到達したとすると、さらにビットを生成することが、生成されることになる乱数によってこれらの第1および第2の閾値が超えられるか否かの判定を行うために有用な追加の情報を提供することはない。したがって、完全な乱数は、その乱数が第1および第2の閾値を超えるか否かに関して、まったく追加の情報が獲得可能でないことから、作成する必要性がない。
【0085】
第3の閾値については、判定を行う上で最初の2ビットが充分でないとすることができ(乱数および第3の閾値の最初の2ビットが同一であることから)この判定は、3番目のビットが作成された後にのみ行うことが可能である。また、この判定が行われたとき、すなわち生成されるべき乱数が第3の閾値を超えることになるか、または第3の閾値より小さくなるかの判定が行われたときにおいても、後続する各ビットを作成することが、すでになされている判定になんらの情報も追加することにはならない。
【0086】
したがって、この時点において、関連のあるすべての判定(生成されることになる乱数は、閾値を超えるか否か)がすでに行われていることから、意思決定または少なくとも乱数の生成を中止することは妥当である。さらなる処理が最終的に作成されることになる実際の乱数(すなわち、それの確定的な値)に依存せず、真の乱数によってランダムな判定を行うことだけが意図されている場合には、これがコンピューティング・リソースを有意に節約する。
【0087】
このプロセスを、生成されることになる乱数の最大値を閾値の数が超えない限り、任意の数の閾値に拡張可能であることは明らかである。可能性として128ビットを有する乱数の場合、たとえば、0から2130までの範囲にわたる閾値に対して判定を行うことは、少なくとも2128を超える値のためのこの判定が常に『ノー』をもたらすことになるため、妥当なものとはならない。
【0088】
上に述べられている複数の閾値に対して乱数を比較する方法を用いると、たとえば、特定の間隔内に入る(たとえば、第1の閾値より大きく、かつ第2の閾値より小さい)乱数だけをさらに処理することによって、バイアス付きの乱数分布を作り出すことも可能である。
【符号の説明】
【0089】
100 方法
300 コンピューティング・システム
301 プロセッサ
302 メモリ
303 コンパレータ
305 別体のデータ・ストレージを取り付けるための手段
【国際調査報告】