特許第6793747号(P6793747)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ アリババ・グループ・ホールディング・リミテッドの特許一覧

<>
  • 特許6793747-乱数生成及び取得の方法及びデバイス 図000002
  • 特許6793747-乱数生成及び取得の方法及びデバイス 図000003
  • 特許6793747-乱数生成及び取得の方法及びデバイス 図000004
  • 特許6793747-乱数生成及び取得の方法及びデバイス 図000005
  • 特許6793747-乱数生成及び取得の方法及びデバイス 図000006
  • 特許6793747-乱数生成及び取得の方法及びデバイス 図000007
  • 特許6793747-乱数生成及び取得の方法及びデバイス 図000008
  • 特許6793747-乱数生成及び取得の方法及びデバイス 図000009
  • 特許6793747-乱数生成及び取得の方法及びデバイス 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6793747
(24)【登録日】2020年11月12日
(45)【発行日】2020年12月2日
(54)【発明の名称】乱数生成及び取得の方法及びデバイス
(51)【国際特許分類】
   G06F 7/58 20060101AFI20201119BHJP
   G09C 1/00 20060101ALI20201119BHJP
【FI】
   G06F7/58 620
   G09C1/00 650B
【請求項の数】12
【全頁数】21
(21)【出願番号】特願2018-549163(P2018-549163)
(86)(22)【出願日】2017年3月7日
(65)【公表番号】特表2019-512805(P2019-512805A)
(43)【公表日】2019年5月16日
(86)【国際出願番号】CN2017075828
(87)【国際公開番号】WO2017157197
(87)【国際公開日】20170921
【審査請求日】2020年3月6日
(31)【優先権主張番号】201610152995.2
(32)【優先日】2016年3月17日
(33)【優先権主張国】CN
【早期審査対象出願】
(73)【特許権者】
【識別番号】510330264
【氏名又は名称】アリババ・グループ・ホールディング・リミテッド
【氏名又は名称原語表記】ALIBABA GROUP HOLDING LIMITED
(74)【代理人】
【識別番号】100188558
【弁理士】
【氏名又は名称】飯田 雅人
(74)【代理人】
【識別番号】100205785
【弁理士】
【氏名又は名称】▲高▼橋 史生
(74)【代理人】
【識別番号】100097320
【弁理士】
【氏名又は名称】宮川 貞二
(74)【代理人】
【識別番号】100155192
【弁理士】
【氏名又は名称】金子 美代子
(74)【代理人】
【識別番号】100131820
【弁理士】
【氏名又は名称】金井 俊幸
(74)【代理人】
【識別番号】100215049
【弁理士】
【氏名又は名称】石川 貴志
(74)【代理人】
【識別番号】100100398
【弁理士】
【氏名又は名称】柴田 茂夫
(72)【発明者】
【氏名】ヴェン,ジャシャン
【審査官】 佐賀野 秀一
(56)【参考文献】
【文献】 特開2009−129432(JP,A)
【文献】 特開2005−228169(JP,A)
【文献】 特開平11−053173(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 7/58− 7/72
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
乱数生成方法であって、
乱数列を生成するステップであって、前記乱数列はN個の格納ユニットを含み、前記格納ユニットのそれぞれが乱数を格納し、Nは正の整数である、ステップ(S110)と、
前記乱数列内の前記格納ユニットに格納された前記乱数のランダムシャッフリングを行うステップ(S120)であって、前記格納ユニットのそれぞれが識別子値を有し、前記乱数列内の前記格納ユニットに格納された前記乱数のランダムシャッフリングを行うステップが、
ランダム関数に基づきランダム値を生成するステップと、
前記ランダム値に基づいて交換対象格納ユニットの識別子値を生成するステップ(S310)と、
前記識別子値と所定の交換ルールとに基づいて、前記交換対象格納ユニットの乱数と、目標格納ユニットの乱数とを交換するステップ(S320)と
を備える、ステップと、
乱数取得命令を受信し、かつ前記乱数取得命令に基づいて前記乱数列内の対応する格納ユニットから前記対応する格納ユニットに格納された乱数を読み出すステップ(S130)と
を備える、乱数生成方法。
【請求項2】
前記N個の格納ユニットが異なる乱数を格納し、それぞれの格納ユニットに格納された乱数が、別の格納ユニットに格納された乱数と異なる、請求項1に記載の乱数生成方法。
【請求項3】
前記ランダムシャッフリングが、前記乱数列内の前記N個の格納ユニットの上で実行される、請求項1に記載の乱数生成方法。
【請求項4】
前記乱数取得命令を受信した後に、順次前記乱数列から乱数が読み出すステップをさらに備える、請求項1に記載の乱数生成方法。
【請求項5】
ランダム関数に基づきランダム値を生成するステップが、
iが1よりも大きくNよりも小さいとき、現在の時刻と(i−1)番目のランダム値とに基づいてi番目のランダム値を生成するステップであって、iは交換回数の数である、ステップか、または
iが1に等しいとき、現在の時刻に基づいてi番目のランダム値を生成するステップ
を備える、請求項1に記載の乱数生成方法。
【請求項6】
前記所定の交換ルールは、i番目の交換が行われるとき、i番目のランダム値に対応する格納ユニットの乱数が(N+1−i)番目の格納ユニットの乱数と交換される、請求項1に記載の乱数生成方法。
【請求項7】
前記乱数列内の全ての格納ユニットに対して交換が行われたかどうかを判定するステップ(S330)と、
乱数列内の全ての格納ユニットに対して前記交換が行われたとの判定に応じて、前記格納ユニットに格納された前記乱数がランダムにシャフルされたと判定するステップ(S340)と
をさらに備える、請求項1に記載の乱数生成方法。
【請求項8】
前記乱数列内の全ての格納ユニットに対して交換が行われていないとの判定に応じて、
ランダム関数に基づいてランダム値を生成し、かつ前記ランダム値に基づいて交換対象格納ユニットの識別子値を決定するステップ(S310)と、
前記識別子値と所定の交換ルールとに基づいて、前記交換対象格納ユニットの乱数と、目標格納ユニットの乱数とを交換するステップ(S320)と
をさらに備える、請求項7に記載の乱数生成方法。
【請求項9】
前記乱数取得命令に基づいて、前記乱数列内の対応する格納ユニットから読み出すステップが、
前記乱数取得命令に基づいて現在読み出されている格納ユニットの識別子値を取得するステップであって、前記読み出されている格納ユニットが、前回読み出された格納ユニットである、ステップと、
前記現在読み出されている格納ユニットの前記識別子値に基づいて、次の格納ユニットに格納された乱数を読み出すステップであって、前記乱数列内の前記格納ユニットの読み出しが順次実施される、ステップと
を備える、請求項1に記載の乱数生成方法。
【請求項10】
前記乱数取得命令に基づいて前記乱数列内の対応する格納ユニットから読み出すステップが、
前記読み出された格納ユニットが前記乱数列の最後の格納ユニットであるかどうかを判定するステップと、
前記読み出された格納ユニットが前記乱数列の最後の格納ユニットではないとの判定に応じて、次の格納ユニットに格納された乱数を読み出すステップか、または、
前記読み出された格納ユニットが前記乱数列の最後の格納ユニットであるとの判定に応じて、新しい乱数列を生成するステップ
をさらに備える、請求項1に記載の乱数生成方法。
【請求項11】
前記乱数取得命令を受信し、前記乱数列内の前記対応する格納ユニットから前記乱数読み出すステップが、
乱数取得命令を受信するステップ(S210)と、
現在読み出されている格納ユニットが前記乱数列の最後の格納ユニットであるかどうかを判定するステップ(S220)と、
前記現在読み出されている格納ユニットが前記乱数列の最後の格納ユニットであるとの判定に応じて、
乱数列を初期化し、かつ新しい乱数列を生成するステップ(S230)と、
前記乱数列内の前記格納ユニットの位置を周期的にシャッフリングすることによって、前記乱数列のランダムシャッフリングを実施するステップ(S240)と
を備える、ステップと、
前記現在読み出されている格納ユニットの前回取得した識別子値に基づいて、前記乱数列内の次の格納ユニットに格納されたデータを選択し、かつ前記データを現在の取得対象乱数として使用するステップ(S250)と
をさらに備える、請求項1に記載の乱数生成方法。
【請求項12】
乱数生成デバイスであって、前記デバイスによって実行されたとき、前記デバイスに請求項1〜11のいずれか一項に記載の方法を実行させる、前記デバイスのメモリ内の実行可能な命令を記憶する、乱数生成デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、2016年3月17日に出願され「乱数生成及び取得の方法及びデバイス」と題された中国特許出願第201610152995.2号の優先権を主張し、上記中国特許出願は、参照によってその全体が本明細書に組み込まれる。
【0002】
本願は、コンピュータ技術の分野に関し、特に、乱数生成及び取得の方法及びデバイスに関する。
【背景技術】
【0003】
乱数がコンピュータの分野において広く適用されるのに伴って、乱数の生成に対する要求が高まっている。現在、一般に用いられている乱数生成方法は主に2種類ある。一方はソフトウェアによる方法であり、システムの時刻を乱数生成のシードとして用い、その上でシステムの機能に基づき乱数を生成する。他方はハードウェアによる方法であり、乱数を生成するハードウェアデバイスがランダム信号に基づき乱数を生成するように設計されている。
【0004】
しかしながら、ソフトウェアで用いられるシステムのデフォルトの乱数生成方法には、同一の時点(同一の秒又は同一のミリ秒)で生成される乱数は反復率が高いことから乱数の分散に偏りが生ずる、即ち、疑似乱数が生成されてしまう、という欠点がある。コンピュータアプリケーションシステムにおいては、乱数を生成するためのシードとして時刻が用いられる。よって、複数の時刻シードが同一であることにより比較的短時間(例えば同一のミリ秒や秒を含む期間)内に生成される乱数は反復率が高く、その結果、乱数の分散に偏りが生じてしまう。
【0005】
本願の目的は、先に述べた技術的問題の1つを一定程度まで解決することである。
【0006】
そのため、本願の第1の目的は、乱数生成方法を提供することである。この方法は、乱数を格納する格納ユニットをN個含む、乱数列を生成するステップと、次に、乱数列内の格納ユニットに対してランダムシャフリングを行うステップと、乱数取得命令を受信した場合、乱数取得命令に基づき、乱数列内の対応する格納ユニットから乱数を読み出すステップとを含む。本願の実施においては、比較的短い単位時間で獲得される複数の乱数の反復率が低く、偏りのない分散が得られる。したがって、本願における乱数生成方法は比較的高いランダム性を達成できる。
【0007】
本願の第2の目的は、乱数生成デバイスを提供することである。
【0008】
本願の第3の目的は、乱数取得方法を提供することである。
【0009】
本願の第4の目的は、乱数取得デバイスを提供することである。
【0010】
前述の目的を達成するために、本願の第1の実施の形態は乱数生成方法を提供し、前記方法は:乱数列を生成するステップであって、前記乱数列はN個の格納ユニットを含み、前記格納ユニットのそれぞれは乱数を格納し、Nは正の整数である、前記生成するステップと;前記乱数列内の前記格納ユニットに対してランダムシャフリングを行うステップと;乱数取得命令を受信し、前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を読み出すステップと;を含む。
【0011】
本願の実施における乱数生成方法は、先ず、乱数を格納する格納ユニットをN個含む乱数列を生成するステップと、次に、乱数列内の格納ユニットに対してランダムシャフリングを行うステップと、乱数取得命令を受信し、乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すステップとを含む。乱数列内の格納ユニットに対してランダムシャフリングがなされるので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数生成方法は比較的高いランダム性を達成できる。
【0012】
本願の実施において、N個の格納ユニットは異なる乱数を格納する。
【0013】
本願の実施では、前記乱数生成方法において、前記格納ユニットは各々が識別子値を有し;前記乱数列内の前記格納ユニットに対してランダムシャフリングを行う前記ステップは:ランダム関数に基づきランダム値を生成し、前記ランダム値に基づき交換対象格納ユニットの識別子値を生成するステップと;前記識別子値と所定の交換ルールとに基づき、前記交換対象格納ユニットの乱数と、目標格納ユニットの乱数とを交換するステップと;を含む。
【0014】
本願の実施では、前記乱数生成方法において、ランダム関数に基づきランダム値を生成する前記ステップは:iが1よりも大きくNよりも小さい場合、現在の時刻と(i−1)番目のランダム値とに基づきi番目のランダム値を生成するステップであって、iは交換回数の順番である、前記生成するステップ;又は、iが1に等しい場合、現在の時刻に基づきi番目のランダム値を生成するステップ;を含む。
【0015】
本願の実施では、前記所定の交換ルールは:i番目の交換が行われる際、i番目のランダム値に対応する格納ユニットの乱数が(N+1−i)番目の格納ユニットの乱数と交換されるということである。
【0016】
本願の実施では、前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を読み出す前記ステップは:前記乱数取得命令に基づき現在読み出されている格納ユニットの識別子値を獲得するステップと;前記現在読み出されている格納ユニットの前記識別子値に基づき、次の格納ユニットに格納された乱数を読み出すステップと;を含む。
【0017】
前述の目的を達成するために、本願の第2の実施の形態は乱数生成デバイスを提供し、前記デバイスは:乱数列を生成するように構成された生成モジュールであって、前記乱数列はN個の格納ユニットを含み、前記格納ユニットのそれぞれは乱数を格納し、Nは正の整数である、前記生成モジュールと;前記乱数列内の前記格納ユニットに対してランダムシャフリングを行うように構成されたランダムシャフリングモジュールと;乱数取得命令を受信し、前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を読み出すように構成された読み出しモジュールと;を含む。
【0018】
本願の実施における乱数生成デバイスにおいて、先ず、生成モジュールが、乱数を格納する格納ユニットをN個含む乱数列を生成し、次に、ランダムシャフリングモジュールが、乱数列内の格納ユニットに対してランダムシャフリングを行い、読み出しモジュールが、乱数取得命令を受信し、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すことができる。ランダムシャフリングモジュールが乱数列内の格納ユニットに対してランダムシャフリングを行うので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数生成デバイスは比較的高いランダム性を達成できる。
【0019】
本願の実施において、N個の格納ユニットは異なる乱数を格納する。
【0020】
本願の実施では、前記乱数生成デバイスにおいて、前記格納ユニットは各々が識別子値を有し、前記ランダムシャフリングモジュールは:ランダム関数に基づきランダム値を生成し、前記ランダム値に基づき交換対象格納ユニットの識別子値を生成するように構成された識別子値生成サブモジュールと;前記識別子値と所定の交換ルールとに基づき、前記交換対象格納ユニットの乱数と目標格納ユニットの乱数とを交換するように構成された交換サブモジュールと;を含む。
【0021】
本願の実施では、前記乱数生成デバイスにおいて、iが1よりも大きくNよりも小さい場合、前記識別子値生成サブモジュールが、現在の時刻と(i−1)番目のランダム値とに基づきi番目のランダム値を生成し、ここでiは交換回数の順番であり;又は、iが1に等しい場合、前記識別子値生成サブモジュールが、現在の時刻に基づきi番目のランダム値を生成する。
【0022】
本願の実施では、前記所定の交換ルールは:i番目の交換が行われる際、i番目のランダム値に対応する格納ユニットの乱数が(N+1−i)番目の格納ユニットの乱数と交換されるということである。
【0023】
本願の実施では、前記読み出しモジュールは:前記乱数取得命令に基づき現在読み出されている格納ユニットの識別子値を獲得するように構成された取得サブモジュールと;前記現在読み出されている格納ユニットの前記識別子値に基づき、次の格納ユニットに格納された乱数を読み出すように構成された読み出しサブモジュールと;を含む。
【0024】
前述の目的を達成するために、本願の第3の実施の形態は乱数取得方法を提供し、前記方法は:乱数取得命令を受信して乱数列を獲得するステップであって、前記乱数列はN個の格納ユニットを含み、前記格納ユニットのそれぞれは乱数を格納し、前記乱数列における前記N個の格納ユニットの位置はランダムシャフリングを通じて特定され、Nは正の整数である、前記獲得するステップと;前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を獲得するステップと;を含む。
【0025】
本願の実施における乱数取得方法は、先ず、乱数取得命令を受信するステップと、次に、乱数列を獲得し、乱数列におけるN個の格納ユニットの位置を、ランダムシャフリングを通じて特定するステップと、乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すステップとを含む。乱数列内の格納ユニットに対してランダムシャフリングが行われるので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数取得方法は比較的高いランダム性を達成できる。
【0026】
本願の実施において、N個の格納ユニットは異なる乱数を格納する。
【0027】
本願の実施では、前記乱数取得方法において、前記格納ユニットは各々が識別子値を有し、以下のステップを用いて前記乱数列における前記N個の格納ユニットの位置に対してランダムシャフリングが実行される:ランダム関数に基づきランダム値を生成し、前記ランダム値に基づき交換対象格納ユニットの識別子値を生成するステップと;前記識別子値と所定の交換ルールとに基づき、前記交換対象格納ユニットの乱数と目標格納ユニットの乱数とを交換するステップ。
【0028】
本願の実施では、前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を獲得する前記ステップは:前記乱数取得命令に基づき現在読み出されている格納ユニットの識別子値を獲得するステップと;前記現在読み出されている格納ユニットの前記識別子値に基づき、次の格納ユニットに格納された乱数を読み出すステップと;を含む。
【0029】
前述の目的を達成するために、本願の第4の実施の形態は乱数取得デバイスを提供し、前記デバイスは:乱数取得命令を受信するように構成された受信モジュールと;乱数列を獲得するように構成された乱数列取得モジュールであって、前記乱数列はN個の格納ユニットを含み、前記格納ユニットのそれぞれは乱数を格納し、前記乱数列におけるN個の前記格納ユニットの位置はランダムシャフリングを通じて特定され、Nは正の整数である、前記乱数列取得モジュールと;前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を獲得するように構成された乱数取得モジュールと;を含む。
【0030】
本願の実施における乱数取得デバイスにおいては、先ず、受信モジュールが乱数取得命令を受信し、次に、乱数列取得モジュールが乱数列を獲得し、乱数列におけるN個の格納ユニットの位置がランダムシャフリングを通じて特定され、乱数取得モジュールが、受信された乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出す。乱数列内の格納ユニットに対してランダムシャフリングが行われるので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数取得デバイスは比較的高いランダム性を達成できる。
【0031】
本願の実施では、前記N個の格納ユニットが異なる乱数を格納する。
【0032】
本願の実施では、前記乱数取得モジュールは:前記乱数取得命令に基づき現在読み出されている格納ユニットの識別子値を獲得するように構成された第1の取得サブモジュールと;前記現在読み出されている格納ユニットの前記識別子値に基づき、次の格納ユニットに格納された乱数を獲得するように構成された第2の取得サブモジュールと;を含む。
【0033】
本願の追加の態様及び利点は、以下の説明において部分的に提示される。それらの一部は、以下の説明から明らかになろう、又は、本願を実施することにより理解できるであろう。
【図面の簡単な説明】
【0034】
本願の前述の及び/又は追加の態様及び利点は、添付の図面を参照することで、実施の説明において明確となり理解し易くなるであろう。
【0035】
図1図1は、本願の実施に係る乱数生成方法を例示するフローチャートである。
【0036】
図2図2は、本明の実施に係る乱数取得工程を例示するフローチャートである。
【0037】
図3図3は、本願の実施に係る、乱数列内の格納ユニットに対してランダムシャフリングが行われる工程を例示するフローチャートである。
【0038】
図4図4は、本願の実施に係る乱数生成デバイスを例示する概略構造図である。
【0039】
図5図5は、本願の他の実施に係る乱数生成デバイスを例示する概略構造図である。
【0040】
図6図6は、本願の別の実施に係る乱数生成デバイスを例示する概略構造図である。
【0041】
図7図7は、本願の実施に係る乱数取得方法を例示するフローチャートである。
【0042】
図8図8は、本願の実施に係る乱数取得デバイスを例示する概略構造図である。
【0043】
図9図9は、本願の他の実施に係る乱数取得デバイスを例示する概略構造図である。
【発明を実施するための形態】
【0044】
以下に、本願の実施を詳細に説明する。実施例は、添付図面に示されている。同一又は類似の参照番号は、同一又は類似の要素、又は、同一又は類似の機能を有する要素を示す。 添付の図面を参照して以下に説明される実施は例であり、本願を限定するのではなく本願を説明することを意図している。
【0045】
本願においては、乱数列内の乱数がランダムにシャフリングされるよう、乱数列内の格納ユニットに対してランダムシャフリングが行われる。これにより、従来のランダム関数が用いられる場合の、高い反復率に起因する偏りのある分散の問題が解決される。乱数を獲得する必要がある場合、乱数列から対応する乱数を獲得できる。
【0046】
図1は、本願の実施に係る乱数生成方法を例示するフローチャートである。
【0047】
図1に示されるように、本願のこの実施における乱数生成方法は以下の各ステップを含む。
【0048】
S110.乱数列を生成する。ここで、乱数列はN個の格納ユニットを含み、格納ユニットのそれぞれは乱数を格納し、Nは正の整数である。
【0049】
本願のこの実施において、N個の格納ユニットは異なる乱数を格納する。
【0050】
本願のこの実施において、生成された乱数列内の格納ユニットは、対応する異なる乱数を格納することが分かる。例えば、1つの格納ユニットが乱数2を格納する場合、他の格納ユニットが乱数2を格納することはない。
【0051】
本願のこの実施においては、各格納ユニットに格納される乱数が他の格納ユニットに格納される乱数と異なるように、N個の格納ユニットがそれぞれ1からN個の整数を格納してよい。
【0052】
本願の他の実施において、乱数列の長さは設定可能であり、要求に応じて事前に設定される。
【0053】
S120.乱数列内の格納ユニットに対してランダムシャフリングを行う。
【0054】
本願のこの実施におけるランダムシャフリングは、乱数列内のN個の格納ユニットに格納された乱数にランダムな交換を行うことを意味し、その結果、格納ユニットに格納された乱数がランダムにシャフリングされることは注目に値する。これにより、既存の技術においてランダム関数が用いられる場合の、高い確率で反復が発生することに起因する偏りのある分散の問題は解決される。本願のこの実施においては、複数の方法を用いてN個の格納ユニットに格納された乱数をランダムに交換できる。それらの方法は、後述の実施において詳細に説明する。当業者であれば、複数の方法を用いて、乱数列に格納された乱数に対しランダムシャフリングを行い、乱数をランダムにシャフリングすることが可能であろう。したがって、本願は、本願の以下の実施において記載されるランダム交換のアルゴリズムに限定されない。前述の目的を達成できるいずれのアルゴリズムも、本願の保護の範囲に含まれる。
【0055】
S130.乱数取得命令を受信し、乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出す。
【0056】
本願のこの実施において、乱数取得命令が受信された後、対応する乱数が乱数列から順次読み出されてもよく、ランダムに読み出されてもよい。当然ながら、本願のこの実施において、対応する乱数は、他の方法を用いて乱数列から読み出してもよい。
【0057】
本願の具体的な実施において、乱数取得命令が受信された後、現在読み出されている格納ユニットの識別子値(即ち、前回読み出された格納ユニットの識別子値)が乱数取得命令に基づき獲得され、現在読み出されている格納ユニットの識別子値に基づき、次の格納ユニットに格納された乱数が読み出される。
【0058】
乱数取得命令が受信される度に、更に、読み出されている格納ユニットが乱数列における最後の格納ユニットであるかどうかが判定される。否定であれば、次の格納ユニットに格納された乱数が更に読み出される。肯定であれば、新たな乱数列が生成される必要がある、即ち、ステップS110が実行される。
【0059】
本願のこの実施における乱数生成方法は、先ず、乱数を格納する格納ユニットをN個含む乱数列を生成するステップと、次に、乱数列内の格納ユニットに対してランダムシャフリングを行うステップと、乱数取得命令を受信し、乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すステップとを含む。乱数列内の格納ユニットに対してランダムシャフリングが行われるので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数生成方法は比較的高いランダム性を達成できる。
【0060】
当業者が工程をより明確に理解できるように、図2を参照して本願における乱数取得工程を以下詳細に説明する。
【0061】
S210.乱数取得命令を受信する。
【0062】
S220.現在読み出されている格納ユニットが乱数列における最後の格納ユニットであるかどうかを判定する。
【0063】
乱数取得命令が受信される度に、更に、現在読み出されている格納ユニットが乱数列における最後の格納ユニットであるかどうかが判定される。否定であれば、次の格納ユニットに格納された乱数が更に読み出される。
【0064】
S230.肯定であれば、乱数列を初期化し、新たな乱数列を生成する。
【0065】
現在読み出されている格納ユニットが乱数列における最後の格納ユニットである、と判定された場合、即ち、それは、乱数列内の全ての格納ユニットに格納された乱数が読み出されている、ということである。よって、乱数列は初期化される必要があり、新たな乱数列が生成される。
【0066】
本願のこの実施において、現在の格納ユニットが乱数列における最後の格納ユニットではない、と判定された場合は、乱数取得命令に基づき、対応する格納ユニットに格納された乱数が乱数列内の格納ユニットから直接読み出される。
【0067】
S240.乱数列内の格納ユニットに対してランダムシャフリングを行う、即ち、乱数列における格納ユニットの位置を周期的にシャフリングする。
【0068】
本願のこの実施においては、乱数列における格納ユニットの位置が周期的にシャフリングされ、格納ユニットに格納された乱数がランダムにシャフリングされる。これにより、既存の技術においてランダム関数が用いられる場合の、高い確率で反復が発生することに起因する偏りのある分散の問題は解決される。本願のこの実施においては、複数の方法を用いてN個の格納ユニットに格納された乱数に対しランダムな交換を行うことができ、乱数がランダムにシャフリングされる。本願のこの実施は上記に限定されない。
【0069】
S250.前回獲得した格納ユニットの識別子値に基づいて、乱数列内の次の格納ユニットに格納されたデータを選択し、データを現在の獲得対象乱数として用いる。
【0070】
現在読み出されている格納ユニットの識別子値(即ち、前回読み出された格納ユニットの識別子値)は、乱数取得命令に基づいて獲得され、現在読み出されている格納ユニットの識別子値に基づいて、次の格納ユニットに格納された乱数が読み出される。例えば、乱数は順次読み出されてよい。
【0071】
対応する乱数は、更に、他の方法を用いて乱数列から読み出せることは注目に値する。本願のこの実施は、対応する乱数を乱数列から順次読み出す方法に限定されない。
【0072】
本願における乱数生成方法は、JAVA(登録商標)言語におけるプログラムの秒数に基づき定義されてもよい。以下詳細に説明する。
【0073】
先ず、乱数列を初期化し、識別子値と乱数列の長さとを獲得するよう格納ユニットを定義する。乱数命令が受信された後、現在の格納ユニットが乱数列における最後の格納ユニットであるかどうかを判定する。否定の場合、新たな乱数列が生成される必要がある。次に、乱数列内の格納ユニットが周期的にシャフリングされ、最終的に、前回獲得された格納ユニットの識別子値に基づき、乱数列における次の格納ユニットに格納されたデータが、現在の獲得対象乱数として選択される。
【0074】
本願における乱数生成方法はJAVA(登録商標)言語に基づく実施に限定されるものではなく、他のコンピュータ言語を用いて実施できることは注目に値する。
【0075】
本願のこの実施における乱数生成方法は、先ず、乱数を格納する格納ユニットをN個含む乱数列を生成するステップと、次に、乱数列内の格納ユニットに対してランダムシャフリングを行うステップと、乱数取得命令を受信し、乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すステップとを含む。乱数列内の格納ユニットに対してランダムシャフリングが行われるので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数生成方法は比較的高いランダム性を達成できる。
【0076】
本願における、乱数列内の格納ユニットに対してランダムシャフリングが行われる工程を当業者がより明確に理解できるように、図3を参照して該工程を以下詳細に説明する。
【0077】
S310.現在の時刻とランダム関数とに基づきランダム値を生成する。ここで、各格納ユニットは識別子値を有する。識別子値は、各格納ユニットの識別子を相互に区別するために用いられる。本願のこの実施において、初期の状態における(即ち、ランダムシャフリング前の)格納ユニットの識別子値は、格納ユニットに格納された乱数と同じとしてもよい。
【0078】
ステップS310で生成されるランダム値と、格納ユニットに格納された乱数とは、概念的に異なることは注目に値する。本ステップで生成されるランダム値は、交換対象格納ユニットの識別子値を特定するために用いる。
【0079】
iが1よりも大きくNよりも小さい場合、現在の時刻と(i−1)番目のランダム値とに基づきi番目のランダム値が生成され、一方、iが1に等しい場合、現在の時刻に基づきi番目のランダム値が生成される(ただし、iは、交換回数の順番である)。換言すれば、ランダム値が初めて生成される場合、ランダム値は現在の時刻に基づき生成される。ランダム値が生成されるのが初めてではない場合、i番目のランダム値が現在の時刻と(i−1)番目のランダム値とに基づいて生成される。
【0080】
本願のこの実施においては、乱数列が生成された後、各格納ユニットが識別子値を有する。ランダム関数に基づきランダム値が生成され、ランダム値に基づき交換対象格納ユニットの識別子値が生成され、交換対象格納ユニットが特定される。
【0081】
S320.識別子値と所定の交換ルールとに基づき、交換対象格納ユニットの乱数と目標格納ユニットの乱数とを交換する。
【0082】
i番目の交換が行われる際、i番目のランダム値に対応する格納ユニットの乱数が(N+1−i)番目の格納ユニットの乱数と交換される。
【0083】
例えば、乱数列が生成された後、各格納ユニットは識別子値を有し、格納ユニットは識別子値に基づき相互に区別されてよい。iが1である場合、1番目のランダム値が現在の時刻に基づき生成され、交換対象格納ユニットの識別子値は1番目のランダム値に基づき生成される。1番目のランダム値に対応する格納ユニットの乱数が所定の交換ルールに応じてN番目の格納ユニットの乱数と交換される、即ち、1番目のランダム値に対応する格納ユニットの乱数がN番目の格納ユニットに格納され、N番目の格納ユニットの乱数が1番目のランダム値に対応する格納ユニットに格納される。iが2である場合、2番目のランダム値が現在の時刻と1番目のランダム値とに基づき生成され、交換対象格納ユニットの識別子値が2番目のランダム値に基づき生成される。2番目のランダム値に対応する格納ユニットの乱数が所定の交換ルールに基づき(N−1)番目の格納ユニットの乱数と交換される、即ち、2番目のランダム値に対応する格納ユニットの乱数が(N−1)番目の格納ユニットに格納され、(N−1)番目の格納ユニットの乱数が2番目のランダム値に対応する格納ユニットに格納される。類推により、同様の操作が、乱数列内の全ての格納ユニットに格納された乱数に対する交換が完了するまで、行われる。前述の実施においては、先ず、1番目の交換演算における識別子値に対応する格納ユニットとN番目の格納ユニットとの間で交換が行われる。代替として、本願の他の実施において、1番目の格納ユニットに対して最初に交換が行われてもよい。
【0084】
例えば、乱数列randArry[]が初期化される。乱数列内の各格納ユニットに自然数が割り当てられる。例えば、randArry[0]=1、randArry[1]=2...randArry[n−1]=n。乱数列における格納ユニットの位置は周期的にシャフリングされる。例えば、乱数列内の各格納ユニットに格納された値は、i番目から最後の格納ユニットに格納された値と交換されてよく、iはn−1から漸次減じられる(例えば、randArry[1]=2とrandArry[n−1]=nとの間で交換が行われる)。
【0085】
本願のこの実施における格納ユニットの乱数を交換する方法は、所定の交換ルールの1つのタイプに過ぎないことは注目に値する。具体的には、所定の交換ルールは実際の要件に基づき設定されてよく、格納ユニットの乱数に対する交換は、様々な交換方法を用いて行われる。
【0086】
S330.乱数列内の全ての格納ユニットに対して交換が行われたかどうかを判定する。
【0087】
S340.肯定であれば、各格納ユニットに格納された乱数がランダムにシャフリングされたと特定する。したがって、乱数列は使用可能である。
【0088】
乱数列内のN個の格納ユニットに格納された乱数全てに対して交換が行われた、と特定される。現在読み出されている格納ユニットの識別子値は、乱数取得命令に基づき獲得され、現在読み出されている格納ユニットの識別子値に基づき、次の格納ユニットに格納された乱数が読み出される。
【0089】
対応する乱数は、他の方法を用いて乱数列から読み出し得ることは注目に値する。本願のこの実施は、対応する乱数を乱数列から順次読み出す方法に限定されない。
【0090】
本願のこの実施における乱数生成方法は、先ず、乱数を格納する格納ユニットをN個含む乱数列を生成するステップと、次に、乱数列内の格納ユニットに対してランダムシャフリングを行うステップと、乱数取得命令を受信し、乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すステップとを含む。乱数列内の格納ユニットに対してランダムシャフリングが行われるので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数生成方法は比較的高いランダム性を達成できる。
【0091】
本開示の実施は、先に述べた各実施において提供される乱数生成方法に対応する乱数生成デバイスを更に提供する。本開示のこの実施において提供される乱数生成デバイスは実施において提供される乱数生成方法と同一の又は類似の技術的特徴を有するので、乱数生成方法の先に述べた各実施は、この実施において提供される乱数生成デバイスにも適用可能であり、この実施において詳細な説明は行わない。図4に示すように、乱数生成デバイスは、生成モジュール110と、ランダムシャフリングモジュール120と、読み出しモジュール130とを含んでよい。
【0092】
生成モジュール110は乱数列を生成するように構成され、乱数列はN個の格納ユニットを含み、格納ユニットのそれぞれは乱数を格納し、Nは正の整数である。
【0093】
本願の実施において、N個の格納ユニットは異なる乱数を格納する。
【0094】
ランダムシャフリングモジュール120は、乱数列内の格納ユニットに対してランダムシャフリングを行うように構成される。
【0095】
読み出しモジュール130は、乱数取得命令を受信し、乱数取得命令に基づいて、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すように構成される。
【0096】
本願の実施において、図5は、本願の他の実施に係る乱数生成デバイスを例示する概略構造図である。即ち、図5に示されるように、図4に基づき、ランダムシャフリングモジュール120は、識別子値生成サブモジュール1201と交換サブモジュール1202とを含む。本願の実施において、識別子値生成サブモジュール1201は、ランダム関数に基づきランダム値を生成し、ランダム値に基づき交換対象格納ユニットの識別子値を生成するように構成される。交換サブモジュール1202は、識別子値と所定の交換ルールとに基づき、交換対象格納ユニットの乱数と目標格納ユニットの乱数とを交換するように構成される。
【0097】
本願の実施において、iが1よりも大きくNよりも小さい場合、識別子値生成サブモジュール1201は現在の時刻と(i−1)番目のランダム値とに基づきi番目のランダム値を生成する(ただし、iは交換回数の順番である)一方、iが1に等しい場合、識別子値生成サブモジュール1201は、現在の時刻に基づきi番目のランダム値を生成する。
【0098】
本願の実施において、所定の交換ルールは、i番目の交換が行われる際に、i番目のランダム値に対応する格納ユニットの乱数が(N+1−i)番目の格納ユニットの乱数と交換されることである。
【0099】
本願の実施において、乱数取得命令が受信された後、現在の格納ユニットが乱数列における最後の格納ユニットであるかどうかを判定する。否定であれば、次の格納ユニットに格納された乱数が読み出され、肯定であれば、新たな乱数列が生成される必要がある。
【0100】
本願の実施において、図6は、本願の他の実施に係る乱数生成デバイスを例示する概略構造図である。図4に基づき、読み出しモジュール130は、取得サブモジュール1301と読み出しサブモジュール1302とを含む。
【0101】
取得サブモジュール1301は、乱数取得命令に基づき現在読み出されている格納ユニットの識別子値を獲得するように構成される。読み出しサブモジュール1302は、現在読み出されている格納ユニットの識別子値に基づき、次の格納ユニットに格納された乱数を読み出すように構成される。
【0102】
本願のこの実施における乱数生成デバイスにおいて、生成モジュールが、乱数を格納する格納ユニットをN個含む乱数列を生成し、次に、ランダムシャフリングモジュールが、乱数列内の格納ユニットに対してランダムシャフリングを行い、読み出しモジュールが、乱数取得命令を受信し、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すことができる。ランダムシャフリングモジュールが乱数列内の格納ユニットに対してランダムシャフリングを行うので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数生成デバイスは比較的高いランダム性を達成できる。
【0103】
図7は、本願の実施に係る乱数取得方法を例示するフローチャートである。本願のこの実施において例示される乱数取得方法を、取得の観点から説明する。図7に示すように、乱数取得方法は以下の各ステップを含む。
【0104】
S710.乱数取得命令を受信し、乱数列を獲得する。ここで、乱数列はN個の格納ユニットを含み、格納ユニットのそれぞれは乱数を格納し、乱数列におけるN個の格納ユニットの位置はランダムシャフリングを通じて特定され、Nは正の整数である。
【0105】
本願のこの実施において、N個の格納ユニットは異なる乱数を格納する。
【0106】
本願のこの実施においては、各格納ユニットに格納される乱数が他の格納ユニットに格納される乱数と異なるように、N個の格納ユニットがそれぞれ1からN個の整数を格納してよい。
【0107】
本願の他の実施において、乱数列の長さは設定可能であり、要求に応じて事前に設定される。
【0108】
本願のこの実施においては、乱数列が生成された後、各格納ユニットが識別子値を有する。ランダム関数に基づきランダム値が生成され、ランダム値に基づき交換対象格納ユニットの識別子値が生成され、交換対象格納ユニットが特定される。
【0109】
本願のこの実施においては、識別子値と所定の交換ルールとに基づき、交換対象格納ユニットの乱数と目標格納ユニットの乱数とが交換される。
【0110】
本願のこの実施における格納ユニットの乱数を交換する方法は、所定の交換ルールの1つのタイプに過ぎないことは注目に値する。即ち、所定の交換ルールは実際の要件に基づき設定されてよく、格納ユニットの乱数に対する交換は、様々な交換方法を用いて行われる。
【0111】
S720.乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を獲得する。
【0112】
本願の具体的な実施において、乱数取得命令が受信された後、現在読み出されている格納ユニットの識別子値(即ち、前回読み出された格納ユニットの識別子値)が乱数取得命令に基づき獲得され、現在読み出されている格納ユニットの識別子値に基づき、次の格納ユニットに格納された乱数が読み出される。
【0113】
本願のこの実施における乱数取得方法は、先ず、乱数取得命令を受信するステップと、次に、乱数列を獲得し、乱数列におけるN個の格納ユニットの位置を、ランダムシャフリングを通じて特定するステップと、受信した乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すステップとを含む。乱数列内の格納ユニットに対してランダムシャフリングが行われるため、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数取得方法は比較的高いランダム性を達成できる。
【0114】
本開示の実施は、先に述べた各実施において提供される乱数取得方法に対応する乱数取得デバイスを更に提供する。本開示のこの実施において提供される乱数取得デバイスは先に述べた各実施において提供される乱数取得方法と同一の又は類似の技術的特徴を有する。よって、乱数取得方法の各実施は、この実施において提供される乱数取得デバイスにも適用可能である。この実施において詳細は説明しない。図8に示すように、乱数取得デバイスは、受信モジュール210と、乱数列取得モジュール220と、乱数取得モジュール230とを含んでよい。
【0115】
受信モジュール210は、乱数取得命令を受信するように構成される。
【0116】
乱数列取得モジュール220は、乱数列を獲得するように構成され、乱数列はN個の格納ユニットを含み、格納ユニットのそれぞれは乱数を格納し、乱数列におけるN個の格納ユニットの位置はランダムシャフリングを通じて特定され、Nは正の整数である。
【0117】
本願の実施において、N個の格納ユニットは異なる乱数を格納する。
【0118】
乱数取得モジュール230は、乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を獲得するように構成される。
【0119】
本願の実施において、図9は、本願の他の実施に係る乱数取得デバイスを例示する概略構造図である。図8に基づき、図9に示される乱数取得モジュール230は、乱数取得命令に基づき現在読み出されている格納ユニットの識別子値を獲得するように構成された第1の取得サブモジュール2301と、現在読み出されている格納ユニットの識別子値に基づき、次の格納ユニットに格納された乱数を獲得するように構成された第2の取得サブモジュール2302とを含む。
【0120】
本願のこの実施における乱数取得デバイスにおいて、先ず、受信モジュールが乱数取得命令を受信し、次に、乱数列取得モジュールが乱数列を獲得し、乱数列におけるN個の格納ユニットの位置がランダムシャフリングを通じて特定され、乱数取得モジュールが、受信された乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出す。乱数列内の格納ユニットに対してランダムシャフリングが行われるので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数取得デバイスは比較的高いランダム性を達成できる。
【0121】
本願の説明において、「第1」及び「第2」という用語は単に説明のために使用されており、示された技術的特徴の数の相対的重要性又は暗示的表示を示唆又は含意するものとして理解することはできない。したがって、「第1」又は「第2」によって修飾された特性は、明示的又は暗示的に1つ又は複数の特徴を含むことができる。本願の記載において、「複数の」は、特に明記しない限り、少なくとも2つ、例えば2つ又は3つを意味する。
【0122】
本明細書の記述において、「実施」「いくつかの実施」「例」「特定の例」及び「いくつかの例」などの参照用語は、実施又は例を参照して説明された特定の特徴、構造、材料、又は特性が、本願の1つ又は複数の実施又は例に含まれる、ということを意味する。本明細書では、前述の用語は必ずしも同一の実施又は例について記載されるわけではない。更に、記載された特定の特徴、構造、材料、又は特性は、任意の1つ又は複数の実施又は例において適切な方法で組み合わせることができる。更に、当業者であれば、本明細書に記載された異なる実施又は例の矛盾しない特徴を組み合わせることができる。
【0123】
フローチャート又は別の方法で記載された任意のプロセス又は方法の説明は、実行可能命令のモジュール、セグメント、又はコードの一部として理解することができ、実行可能命令は特定の論理機能又はプロセスを実施するための1つ又は複数のステップを含み、本願の実施は別の実施をも含み、別の実施において機能は図示又は議論された順序とは異なる順序で実行できる、例えば、関連機能は同時に又は逆の順序で実行される。本願の実施に関連する当業者には理解されるべきである。
【0124】
本願の一部は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組合せによって実施され得ることを理解されたい。前述の実施では、メモリに格納され、適切な命令実行システム又はファームウェアによって実行されるソフトウェアを使用することによって、複数のステップ又は方法を実施することができる。例えば、当該技術分野における以下の技術のいずれか1つ又は組み合わせを用いて実施可能なハードウェアを用いることによってステップ又は方法を実現するのであれば実施することができる:データ信号の論理機能を実施する論理ゲート回路を含むディスクリート論理回路、適切な組合せ論理ゲート回路、プログラマブルゲートアレイ(PGA)、フィールドプログラマブルゲートアレイ(FPGA)などを有する特定用途向け集積回路。
【0125】
当業者であれば、方法の実施におけるステップの全部又は一部が、関連するハードウェアを指示するプログラムによって実施できることを理解することができる。このプログラムは、コンピュータ可読記憶媒体に格納することができる。プログラムが実行されると、方法の実施のステップの1つ又は複数の組み合わせが実行される。
【0126】
更に、本願の実施における機能ユニットは、1つの処理モジュールに統合することができ、又は各ユニットを物理的に単独で存在させることができ、又は2つ以上のユニットを1つのモジュールに統合することができる。統合モジュールは、ハードウェアの形態で実施することができ、又はソフトウェア機能モジュールの形態で実施することができる。統合モジュールがソフトウェア機能モジュールの形態で実施され、独立した製品として販売又は使用される場合、統合モジュールはコンピュータ可読記憶媒体に格納することができる。
【0127】
前述の記憶媒体は、読み出し専用メモリ、磁気ディスク、光ディスクなどであってもよい。本願の実施を上記に示し説明したが、前述の実施は例示であり、本願に対する限定として解釈することはできない。当業者であれば、本願の範囲内において、前述の実施に対して変更、修正、置換、及び修正を行うことができる。
[第1の局面]
乱数生成方法であって:
乱数列を生成するステップであって、前記乱数列はN個の格納ユニットを含み、前記格納ユニットのそれぞれは乱数を格納し、Nは正の整数である、前記生成するステップと;
前記乱数列内の前記格納ユニットに対してランダムシャフリングを行うステップと;
乱数取得命令を受信し、前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を読み出すステップと;を備える、
乱数生成方法。
[第2の局面]
前記N個の格納ユニットが異なる乱数を格納する、
第1の局面に記載の方法。
[第3の局面]
前記格納ユニットは各々が識別子値を有し;
前記乱数列内の前記格納ユニットに対してランダムシャフリングを行う前記ステップは:
ランダム関数に基づきランダム値を生成し、前記ランダム値に基づき交換対象格納ユニットの識別子値を生成するステップと;
前記識別子値と所定の交換ルールとに基づき、前記交換対象格納ユニットの乱数と、目標格納ユニットの乱数とを交換するステップと;を備える、
第1の局面に記載の方法。
[第4の局面]
ランダム関数に基づきランダム値を生成する前記ステップは:
iが1よりも大きくNよりも小さい場合、現在の時刻と(i−1)番目のランダム値とに基づきi番目のランダム値を生成するステップであって、iは交換回数の順番である、前記生成するステップ;又は
iが1に等しい場合、現在の時刻に基づきi番目のランダム値を生成するステップ;を備える、
第3の局面に記載の方法。
[第5の局面]
前記所定の交換ルールは、i番目の交換が行われる際、i番目のランダム値に対応する格納ユニットの乱数が(N+1−i)番目の格納ユニットの乱数と交換される、
第3の局面に記載の方法。
[第6の局面]
前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を読み出す前記ステップは:
前記乱数取得命令に基づき現在読み出されている格納ユニットの識別子値を獲得するステップと;
前記現在読み出されている格納ユニットの前記識別子値に基づき、次の格納ユニットに格納された乱数を読み出すステップと;を備える、
第1の局面に記載の方法。
[第7の局面]
乱数生成デバイスであって:
乱数列を生成するように構成された生成モジュールであって、前記乱数列はN個の格納ユニットを含み、前記格納ユニットのそれぞれは乱数を格納し、Nは正の整数である、前記生成モジュールと;
前記乱数列内の前記格納ユニットに対してランダムシャフリングを行うように構成されたランダムシャフリングモジュールと;
乱数取得命令を受信し、前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を読み出すように構成された読み出しモジュールと;を備える、
乱数生成デバイス。
[第8の局面]
前記N個の格納ユニットが異なる乱数を格納する、
第7の局面に記載のデバイス。
[第9の局面]
前記格納ユニットは各々が識別子値を有し、
前記ランダムシャフリングモジュールは:
ランダム関数に基づきランダム値を生成し、前記ランダム値に基づき交換対象格納ユニットの識別子値を生成するように構成された識別子値生成サブモジュールと;
前記識別子値と所定の交換ルールとに基づき、前記交換対象格納ユニットの乱数と目標格納ユニットの乱数とを交換するように構成された交換サブモジュールと;を備える、
第7の局面に記載のデバイス。
[第10の局面]
iが1よりも大きくNよりも小さい場合、前記識別子値生成サブモジュールが、現在の時刻と(i−1)番目のランダム値とに基づきi番目のランダム値を生成し、ここでiは交換回数の順番であり;又は
iが1に等しい場合、前記識別子値生成サブモジュールが、現在の時刻に基づきi番目のランダム値を生成する、
第9の局面に記載のデバイス。
[第11の局面]
前記所定の交換ルールは、i番目の交換が行われる際、i番目のランダム値に対応する格納ユニットの乱数が(N+1−i)番目の格納ユニットの乱数と交換される、
第9の局面に記載のデバイス。
[第12の局面]
前記読み出しモジュールは:
前記乱数取得命令に基づき現在読み出されている格納ユニットの識別子値を獲得するように構成された取得サブモジュールと;
前記現在読み出されている格納ユニットの前記識別子値に基づき、次の格納ユニットに格納された乱数を読み出すように構成された読み出しサブモジュールと;を備える、
第7の局面に記載のデバイス。
[第13の局面]
乱数取得方法であって:、
乱数取得命令を受信して乱数列を獲得するステップであって、前記乱数列はN個の格納ユニットを含み、前記格納ユニットのそれぞれは乱数を格納し、前記乱数列における前記N個の格納ユニットの位置はランダムシャフリングを通じて特定され、Nは正の整数である、前記獲得するステップと;
前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を獲得するステップと;を備える、
乱数取得方法。
[第14の局面]
前記N個の格納ユニットが異なる乱数を格納する、
第13の局面に記載の方法。
[第15の局面]
前記格納ユニットは各々が識別子値を有し;
前記乱数列における前記N個の格納ユニットの位置に対して、
ランダム関数に基づきランダム値を生成し、前記ランダム値に基づき交換対象格納ユニットの識別子値を生成するステップと、
前記識別子値と所定の交換ルールとに基づき、前記交換対象格納ユニットの乱数と目標格納ユニットの乱数とを交換するステップと、
を用いてランダムシャフリングが実行される;
第13の局面に記載の方法。
[第16の局面]
前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を獲得する前記ステップは:
前記乱数取得命令に基づき現在読み出されている格納ユニットの識別子値を獲得するステップと;
前記現在読み出されている格納ユニットの前記識別子値に基づき、次の格納ユニットに格納された乱数を読み出すステップと;を備える、
第13の局面に記載の方法。
[第17の局面]
乱数取得デバイスであって:
乱数取得命令を受信するように構成された受信モジュールと;
乱数列を獲得するように構成された乱数列取得モジュールであって、前記乱数列はN個の格納ユニットを含み、前記格納ユニットのそれぞれは乱数を格納し、前記乱数列におけるN個の前記格納ユニットの位置はランダムシャフリングを通じて特定され、Nは正の整数である、前記乱数列取得モジュールと;
前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を獲得するように構成された乱数取得モジュールと;を備える、
乱数取得デバイス。
[第18の局面]
前記N個の格納ユニットが異なる乱数を格納する、
第17の局面に記載のデバイス。
[第19の局面]
前記乱数取得モジュールは:、
前記乱数取得命令に基づき現在読み出されている格納ユニットの識別子値を獲得するように構成された第1の取得サブモジュールと;
前記現在読み出されている格納ユニットの前記識別子値に基づき、次の格納ユニットに格納された乱数を獲得するように構成された第2の取得サブモジュールと;を備える、
第17の局面に記載のデバイス。
図1
図2
図3
図4
図5
図6
図7
図8
図9