(57)【要約】本願は、乱数生成及び取得方法、及びデバイスを開示する。前記生成方法は：乱数列を生成するステップであって、前記乱数列はＮ個の格納ユニットを含み、前記格納ユニットのそれぞれは乱数を格納し、Ｎは正の整数である、前記生成するステップと；前記乱数列内の前記格納ユニットに対してランダムシャフリングを行うステップと；乱数取得命令を受信し、前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を読み出すステップと；を含む。本願の実施においては、比較的短い単位時間で獲得される複数の乱数の反復率が低く、偏りのない分散が得られる。したがって、本願における乱数取得方法及びデバイスは比較的高いランダム性を達成できる。
2019512805.tif 000002
【特許請求の範囲】
【請求項１】
乱数生成方法であって：
乱数列を生成するステップであって、前記乱数列はＮ個の格納ユニットを含み、前記格納ユニットのそれぞれは乱数を格納し、Ｎは正の整数である、前記生成するステップと；
前記乱数列内の前記格納ユニットに対してランダムシャフリングを行うステップと；
乱数取得命令を受信し、前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を読み出すステップと；を備える、
乱数生成方法。
【請求項２】
前記Ｎ個の格納ユニットが異なる乱数を格納する、
請求項１に記載の方法。
【請求項３】
前記格納ユニットは各々が識別子値を有し；
前記乱数列内の前記格納ユニットに対してランダムシャフリングを行う前記ステップは：
ランダム関数に基づきランダム値を生成し、前記ランダム値に基づき交換対象格納ユニットの識別子値を生成するステップと；
前記識別子値と所定の交換ルールとに基づき、前記交換対象格納ユニットの乱数と、目標格納ユニットの乱数とを交換するステップと；を備える、
請求項１に記載の方法。
【請求項４】
ランダム関数に基づきランダム値を生成する前記ステップは：
ｉが１よりも大きくＮよりも小さい場合、現在の時刻と（ｉ−１）番目のランダム値とに基づきｉ番目のランダム値を生成するステップであって、ｉは交換回数の順番である、前記生成するステップ；又は
ｉが１に等しい場合、現在の時刻に基づきｉ番目のランダム値を生成するステップ；を備える、
請求項３に記載の方法。
【請求項５】
前記所定の交換ルールは、ｉ番目の交換が行われる際、ｉ番目のランダム値に対応する格納ユニットの乱数が（Ｎ＋１−ｉ）番目の格納ユニットの乱数と交換される、
請求項３に記載の方法。
【請求項６】
前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を読み出す前記ステップは：
前記乱数取得命令に基づき現在読み出されている格納ユニットの識別子値を獲得するステップと；
前記現在読み出されている格納ユニットの前記識別子値に基づき、次の格納ユニットに格納された乱数を読み出すステップと；を備える、
請求項１に記載の方法。
【請求項７】
乱数生成デバイスであって：
乱数列を生成するように構成された生成モジュールであって、前記乱数列はＮ個の格納ユニットを含み、前記格納ユニットのそれぞれは乱数を格納し、Ｎは正の整数である、前記生成モジュールと；
前記乱数列内の前記格納ユニットに対してランダムシャフリングを行うように構成されたランダムシャフリングモジュールと；
乱数取得命令を受信し、前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を読み出すように構成された読み出しモジュールと；を備える、
乱数生成デバイス。
【請求項８】
前記Ｎ個の格納ユニットが異なる乱数を格納する、
請求項７に記載のデバイス。
【請求項９】
前記格納ユニットは各々が識別子値を有し、
前記ランダムシャフリングモジュールは：
ランダム関数に基づきランダム値を生成し、前記ランダム値に基づき交換対象格納ユニットの識別子値を生成するように構成された識別子値生成サブモジュールと；
前記識別子値と所定の交換ルールとに基づき、前記交換対象格納ユニットの乱数と目標格納ユニットの乱数とを交換するように構成された交換サブモジュールと；を備える、
請求項７に記載のデバイス。
【請求項１０】
ｉが１よりも大きくＮよりも小さい場合、前記識別子値生成サブモジュールが、現在の時刻と（ｉ−１）番目のランダム値とに基づきｉ番目のランダム値を生成し、ここでｉは交換回数の順番であり；又は
ｉが１に等しい場合、前記識別子値生成サブモジュールが、現在の時刻に基づきｉ番目のランダム値を生成する、
請求項９に記載のデバイス。
【請求項１１】
前記所定の交換ルールは、ｉ番目の交換が行われる際、ｉ番目のランダム値に対応する格納ユニットの乱数が（Ｎ＋１−ｉ）番目の格納ユニットの乱数と交換される、
請求項９に記載のデバイス。
【請求項１２】
前記読み出しモジュールは：
前記乱数取得命令に基づき現在読み出されている格納ユニットの識別子値を獲得するように構成された取得サブモジュールと；
前記現在読み出されている格納ユニットの前記識別子値に基づき、次の格納ユニットに格納された乱数を読み出すように構成された読み出しサブモジュールと；を備える、
請求項７に記載のデバイス。
【請求項１３】
乱数取得方法であって：、
乱数取得命令を受信して乱数列を獲得するステップであって、前記乱数列はＮ個の格納ユニットを含み、前記格納ユニットのそれぞれは乱数を格納し、前記乱数列における前記Ｎ個の格納ユニットの位置はランダムシャフリングを通じて特定され、Ｎは正の整数である、前記獲得するステップと；
前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を獲得するステップと；を備える、
乱数取得方法。
【請求項１４】
前記Ｎ個の格納ユニットが異なる乱数を格納する、
請求項１３に記載の方法。
【請求項１５】
前記格納ユニットは各々が識別子値を有し；
前記乱数列における前記Ｎ個の格納ユニットの位置に対して、
ランダム関数に基づきランダム値を生成し、前記ランダム値に基づき交換対象格納ユニットの識別子値を生成するステップと、
前記識別子値と所定の交換ルールとに基づき、前記交換対象格納ユニットの乱数と目標格納ユニットの乱数とを交換するステップと、
を用いてランダムシャフリングが実行される；
請求項１３に記載の方法。
【請求項１６】
前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を獲得する前記ステップは：
前記乱数取得命令に基づき現在読み出されている格納ユニットの識別子値を獲得するステップと；
前記現在読み出されている格納ユニットの前記識別子値に基づき、次の格納ユニットに格納された乱数を読み出すステップと；を備える、
請求項１３に記載の方法。
【請求項１７】
乱数取得デバイスであって：
乱数取得命令を受信するように構成された受信モジュールと；
乱数列を獲得するように構成された乱数列取得モジュールであって、前記乱数列はＮ個の格納ユニットを含み、前記格納ユニットのそれぞれは乱数を格納し、前記乱数列におけるＮ個の前記格納ユニットの位置はランダムシャフリングを通じて特定され、Ｎは正の整数である、前記乱数列取得モジュールと；
前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を獲得するように構成された乱数取得モジュールと；を備える、
乱数取得デバイス。
【請求項１８】
前記Ｎ個の格納ユニットが異なる乱数を格納する、
請求項１７に記載のデバイス。
【請求項１９】
前記乱数取得モジュールは：、
前記乱数取得命令に基づき現在読み出されている格納ユニットの識別子値を獲得するように構成された第１の取得サブモジュールと；
前記現在読み出されている格納ユニットの前記識別子値に基づき、次の格納ユニットに格納された乱数を獲得するように構成された第２の取得サブモジュールと；を備える、
請求項１７に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、２０１６年３月１７日に出願され「乱数生成及び取得の方法及びデバイス」と題された中国特許出願第２０１６１０１５２９９５．２号の優先権を主張し、上記中国特許出願は、参照によってその全体が本明細書に組み込まれる。
【０００２】
本願は、コンピュータ技術の分野に関し、特に、乱数生成及び取得の方法及びデバイスに関する。
【背景技術】
【０００３】
乱数がコンピュータの分野において広く適用されるのに伴って、乱数の生成に対する要求が高まっている。現在、一般に用いられている乱数生成方法は主に２種類ある。一方はソフトウェアによる方法であり、システムの時刻を乱数生成のシードとして用い、その上でシステムの機能に基づき乱数を生成する。他方はハードウェアによる方法であり、乱数を生成するハードウェアデバイスがランダム信号に基づき乱数を生成するように設計されている。
【０００４】
しかしながら、ソフトウェアで用いられるシステムのデフォルトの乱数生成方法には、同一の時点（同一の秒又は同一のミリ秒）で生成される乱数は反復率が高いことから乱数の分散に偏りが生ずる、即ち、疑似乱数が生成されてしまう、という欠点がある。コンピュータアプリケーションシステムにおいては、乱数を生成するためのシードとして時刻が用いられる。よって、複数の時刻シードが同一であることにより比較的短時間（例えば同一のミリ秒や秒を含む期間）内に生成される乱数は反復率が高く、その結果、乱数の分散に偏りが生じてしまう。
【０００５】
本願の目的は、先に述べた技術的問題の１つを一定程度まで解決することである。
【０００６】
そのため、本願の第１の目的は、乱数生成方法を提供することである。この方法は、乱数を格納する格納ユニットをＮ個含む、乱数列を生成するステップと、次に、乱数列内の格納ユニットに対してランダムシャフリングを行うステップと、乱数取得命令を受信した場合、乱数取得命令に基づき、乱数列内の対応する格納ユニットから乱数を読み出すステップとを含む。本願の実施においては、比較的短い単位時間で獲得される複数の乱数の反復率が低く、偏りのない分散が得られる。したがって、本願における乱数生成方法は比較的高いランダム性を達成できる。
【０００７】
本願の第２の目的は、乱数生成デバイスを提供することである。
【０００８】
本願の第３の目的は、乱数取得方法を提供することである。
【０００９】
本願の第４の目的は、乱数取得デバイスを提供することである。
【００１０】
前述の目的を達成するために、本願の第１の実施の形態は乱数生成方法を提供し、前記方法は：乱数列を生成するステップであって、前記乱数列はＮ個の格納ユニットを含み、前記格納ユニットのそれぞれは乱数を格納し、Ｎは正の整数である、前記生成するステップと；前記乱数列内の前記格納ユニットに対してランダムシャフリングを行うステップと；乱数取得命令を受信し、前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を読み出すステップと；を含む。
【００１１】
本願の実施における乱数生成方法は、先ず、乱数を格納する格納ユニットをＮ個含む乱数列を生成するステップと、次に、乱数列内の格納ユニットに対してランダムシャフリングを行うステップと、乱数取得命令を受信し、乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すステップとを含む。乱数列内の格納ユニットに対してランダムシャフリングがなされるので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数生成方法は比較的高いランダム性を達成できる。
【００１２】
本願の実施において、Ｎ個の格納ユニットは異なる乱数を格納する。
【００１３】
本願の実施では、前記乱数生成方法において、前記格納ユニットは各々が識別子値を有し；前記乱数列内の前記格納ユニットに対してランダムシャフリングを行う前記ステップは：ランダム関数に基づきランダム値を生成し、前記ランダム値に基づき交換対象格納ユニットの識別子値を生成するステップと；前記識別子値と所定の交換ルールとに基づき、前記交換対象格納ユニットの乱数と、目標格納ユニットの乱数とを交換するステップと；を含む。
【００１４】
本願の実施では、前記乱数生成方法において、ランダム関数に基づきランダム値を生成する前記ステップは：ｉが１よりも大きくＮよりも小さい場合、現在の時刻と（ｉ−１）番目のランダム値とに基づきｉ番目のランダム値を生成するステップであって、ｉは交換回数の順番である、前記生成するステップ；又は、ｉが１に等しい場合、現在の時刻に基づきｉ番目のランダム値を生成するステップ；を含む。
【００１５】
本願の実施では、前記所定の交換ルールは：ｉ番目の交換が行われる際、ｉ番目のランダム値に対応する格納ユニットの乱数が（Ｎ＋１−ｉ）番目の格納ユニットの乱数と交換されるということである。
【００１６】
本願の実施では、前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を読み出す前記ステップは：前記乱数取得命令に基づき現在読み出されている格納ユニットの識別子値を獲得するステップと；前記現在読み出されている格納ユニットの前記識別子値に基づき、次の格納ユニットに格納された乱数を読み出すステップと；を含む。
【００１７】
前述の目的を達成するために、本願の第２の実施の形態は乱数生成デバイスを提供し、前記デバイスは：乱数列を生成するように構成された生成モジュールであって、前記乱数列はＮ個の格納ユニットを含み、前記格納ユニットのそれぞれは乱数を格納し、Ｎは正の整数である、前記生成モジュールと；前記乱数列内の前記格納ユニットに対してランダムシャフリングを行うように構成されたランダムシャフリングモジュールと；乱数取得命令を受信し、前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を読み出すように構成された読み出しモジュールと；を含む。
【００１８】
本願の実施における乱数生成デバイスにおいて、先ず、生成モジュールが、乱数を格納する格納ユニットをＮ個含む乱数列を生成し、次に、ランダムシャフリングモジュールが、乱数列内の格納ユニットに対してランダムシャフリングを行い、読み出しモジュールが、乱数取得命令を受信し、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すことができる。ランダムシャフリングモジュールが乱数列内の格納ユニットに対してランダムシャフリングを行うので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数生成デバイスは比較的高いランダム性を達成できる。
【００１９】
本願の実施において、Ｎ個の格納ユニットは異なる乱数を格納する。
【００２０】
本願の実施では、前記乱数生成デバイスにおいて、前記格納ユニットは各々が識別子値を有し、前記ランダムシャフリングモジュールは：ランダム関数に基づきランダム値を生成し、前記ランダム値に基づき交換対象格納ユニットの識別子値を生成するように構成された識別子値生成サブモジュールと；前記識別子値と所定の交換ルールとに基づき、前記交換対象格納ユニットの乱数と目標格納ユニットの乱数とを交換するように構成された交換サブモジュールと；を含む。
【００２１】
本願の実施では、前記乱数生成デバイスにおいて、ｉが１よりも大きくＮよりも小さい場合、前記識別子値生成サブモジュールが、現在の時刻と（ｉ−１）番目のランダム値とに基づきｉ番目のランダム値を生成し、ここでｉは交換回数の順番であり；又は、ｉが１に等しい場合、前記識別子値生成サブモジュールが、現在の時刻に基づきｉ番目のランダム値を生成する。
【００２２】
本願の実施では、前記所定の交換ルールは：ｉ番目の交換が行われる際、ｉ番目のランダム値に対応する格納ユニットの乱数が（Ｎ＋１−ｉ）番目の格納ユニットの乱数と交換されるということである。
【００２３】
本願の実施では、前記読み出しモジュールは：前記乱数取得命令に基づき現在読み出されている格納ユニットの識別子値を獲得するように構成された取得サブモジュールと；前記現在読み出されている格納ユニットの前記識別子値に基づき、次の格納ユニットに格納された乱数を読み出すように構成された読み出しサブモジュールと；を含む。
【００２４】
前述の目的を達成するために、本願の第３の実施の形態は乱数取得方法を提供し、前記方法は：乱数取得命令を受信して乱数列を獲得するステップであって、前記乱数列はＮ個の格納ユニットを含み、前記格納ユニットのそれぞれは乱数を格納し、前記乱数列における前記Ｎ個の格納ユニットの位置はランダムシャフリングを通じて特定され、Ｎは正の整数である、前記獲得するステップと；前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を獲得するステップと；を含む。
【００２５】
本願の実施における乱数取得方法は、先ず、乱数取得命令を受信するステップと、次に、乱数列を獲得し、乱数列におけるＮ個の格納ユニットの位置を、ランダムシャフリングを通じて特定するステップと、乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すステップとを含む。乱数列内の格納ユニットに対してランダムシャフリングが行われるので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数取得方法は比較的高いランダム性を達成できる。
【００２６】
本願の実施において、Ｎ個の格納ユニットは異なる乱数を格納する。
【００２７】
本願の実施では、前記乱数取得方法において、前記格納ユニットは各々が識別子値を有し、以下のステップを用いて前記乱数列における前記Ｎ個の格納ユニットの位置に対してランダムシャフリングが実行される：ランダム関数に基づきランダム値を生成し、前記ランダム値に基づき交換対象格納ユニットの識別子値を生成するステップと；前記識別子値と所定の交換ルールとに基づき、前記交換対象格納ユニットの乱数と目標格納ユニットの乱数とを交換するステップ。
【００２８】
本願の実施では、前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を獲得する前記ステップは：前記乱数取得命令に基づき現在読み出されている格納ユニットの識別子値を獲得するステップと；前記現在読み出されている格納ユニットの前記識別子値に基づき、次の格納ユニットに格納された乱数を読み出すステップと；を含む。
【００２９】
前述の目的を達成するために、本願の第４の実施の形態は乱数取得デバイスを提供し、前記デバイスは：乱数取得命令を受信するように構成された受信モジュールと；乱数列を獲得するように構成された乱数列取得モジュールであって、前記乱数列はＮ個の格納ユニットを含み、前記格納ユニットのそれぞれは乱数を格納し、前記乱数列におけるＮ個の前記格納ユニットの位置はランダムシャフリングを通じて特定され、Ｎは正の整数である、前記乱数列取得モジュールと；前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を獲得するように構成された乱数取得モジュールと；を含む。
【００３０】
本願の実施における乱数取得デバイスにおいては、先ず、受信モジュールが乱数取得命令を受信し、次に、乱数列取得モジュールが乱数列を獲得し、乱数列におけるＮ個の格納ユニットの位置がランダムシャフリングを通じて特定され、乱数取得モジュールが、受信された乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出す。乱数列内の格納ユニットに対してランダムシャフリングが行われるので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数取得デバイスは比較的高いランダム性を達成できる。
【００３１】
本願の実施では、前記Ｎ個の格納ユニットが異なる乱数を格納する。
【００３２】
本願の実施では、前記乱数取得モジュールは：前記乱数取得命令に基づき現在読み出されている格納ユニットの識別子値を獲得するように構成された第１の取得サブモジュールと；前記現在読み出されている格納ユニットの前記識別子値に基づき、次の格納ユニットに格納された乱数を獲得するように構成された第２の取得サブモジュールと；を含む。
【００３３】
本願の追加の態様及び利点は、以下の説明において部分的に提示される。それらの一部は、以下の説明から明らかになろう、又は、本願を実施することにより理解できるであろう。
【図面の簡単な説明】
【００３４】
本願の前述の及び／又は追加の態様及び利点は、添付の図面を参照することで、実施の説明において明確となり理解し易くなるであろう。
【００３５】
【図１】図１は、本願の実施に係る乱数生成方法を例示するフローチャートである。
【００３６】
【図２】図２は、本明の実施に係る乱数取得工程を例示するフローチャートである。
【００３７】
【図３】図３は、本願の実施に係る、乱数列内の格納ユニットに対してランダムシャフリングが行われる工程を例示するフローチャートである。
【００３８】
【図４】図４は、本願の実施に係る乱数生成デバイスを例示する概略構造図である。
【００３９】
【図５】図５は、本願の他の実施に係る乱数生成デバイスを例示する概略構造図である。
【００４０】
【図６】図６は、本願の別の実施に係る乱数生成デバイスを例示する概略構造図である。
【００４１】
【図７】図７は、本願の実施に係る乱数取得方法を例示するフローチャートである。
【００４２】
【図８】図８は、本願の実施に係る乱数取得デバイスを例示する概略構造図である。
【００４３】
【図９】図９は、本願の他の実施に係る乱数取得デバイスを例示する概略構造図である。
【発明を実施するための形態】
【００４４】
以下に、本願の実施を詳細に説明する。実施例は、添付図面に示されている。同一又は類似の参照番号は、同一又は類似の要素、又は、同一又は類似の機能を有する要素を示す。 添付の図面を参照して以下に説明される実施は例であり、本願を限定するのではなく本願を説明することを意図している。
【００４５】
本願においては、乱数列内の乱数がランダムにシャフリングされるよう、乱数列内の格納ユニットに対してランダムシャフリングが行われる。これにより、従来のランダム関数が用いられる場合の、高い反復率に起因する偏りのある分散の問題が解決される。乱数を獲得する必要がある場合、乱数列から対応する乱数を獲得できる。
【００４６】
図１は、本願の実施に係る乱数生成方法を例示するフローチャートである。
【００４７】
図１に示されるように、本願のこの実施における乱数生成方法は以下の各ステップを含む。
【００４８】
Ｓ１１０．乱数列を生成する。ここで、乱数列はＮ個の格納ユニットを含み、格納ユニットのそれぞれは乱数を格納し、Ｎは正の整数である。
【００４９】
本願のこの実施において、Ｎ個の格納ユニットは異なる乱数を格納する。
【００５０】
本願のこの実施において、生成された乱数列内の格納ユニットは、対応する異なる乱数を格納することが分かる。例えば、１つの格納ユニットが乱数２を格納する場合、他の格納ユニットが乱数２を格納することはない。
【００５１】
本願のこの実施においては、各格納ユニットに格納される乱数が他の格納ユニットに格納される乱数と異なるように、Ｎ個の格納ユニットがそれぞれ１からＮ個の整数を格納してよい。
【００５２】
本願の他の実施において、乱数列の長さは設定可能であり、要求に応じて事前に設定される。
【００５３】
Ｓ１２０．乱数列内の格納ユニットに対してランダムシャフリングを行う。
【００５４】
本願のこの実施におけるランダムシャフリングは、乱数列内のＮ個の格納ユニットに格納された乱数にランダムな交換を行うことを意味し、その結果、格納ユニットに格納された乱数がランダムにシャフリングされることは注目に値する。これにより、既存の技術においてランダム関数が用いられる場合の、高い確率で反復が発生することに起因する偏りのある分散の問題は解決される。本願のこの実施においては、複数の方法を用いてＮ個の格納ユニットに格納された乱数をランダムに交換できる。それらの方法は、後述の実施において詳細に説明する。当業者であれば、複数の方法を用いて、乱数列に格納された乱数に対しランダムシャフリングを行い、乱数をランダムにシャフリングすることが可能であろう。したがって、本願は、本願の以下の実施において記載されるランダム交換のアルゴリズムに限定されない。前述の目的を達成できるいずれのアルゴリズムも、本願の保護の範囲に含まれる。
【００５５】
Ｓ１３０．乱数取得命令を受信し、乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出す。
【００５６】
本願のこの実施において、乱数取得命令が受信された後、対応する乱数が乱数列から順次読み出されてもよく、ランダムに読み出されてもよい。当然ながら、本願のこの実施において、対応する乱数は、他の方法を用いて乱数列から読み出してもよい。
【００５７】
本願の具体的な実施において、乱数取得命令が受信された後、現在読み出されている格納ユニットの識別子値（即ち、前回読み出された格納ユニットの識別子値）が乱数取得命令に基づき獲得され、現在読み出されている格納ユニットの識別子値に基づき、次の格納ユニットに格納された乱数が読み出される。
【００５８】
乱数取得命令が受信される度に、更に、読み出されている格納ユニットが乱数列における最後の格納ユニットであるかどうかが判定される。否定であれば、次の格納ユニットに格納された乱数が更に読み出される。肯定であれば、新たな乱数列が生成される必要がある、即ち、ステップＳ１１０が実行される。
【００５９】
本願のこの実施における乱数生成方法は、先ず、乱数を格納する格納ユニットをＮ個含む乱数列を生成するステップと、次に、乱数列内の格納ユニットに対してランダムシャフリングを行うステップと、乱数取得命令を受信し、乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すステップとを含む。乱数列内の格納ユニットに対してランダムシャフリングが行われるので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数生成方法は比較的高いランダム性を達成できる。
【００６０】
当業者が工程をより明確に理解できるように、図２を参照して本願における乱数取得工程を以下詳細に説明する。
【００６１】
Ｓ２１０．乱数取得命令を受信する。
【００６２】
Ｓ２２０．現在読み出されている格納ユニットが乱数列における最後の格納ユニットであるかどうかを判定する。
【００６３】
乱数取得命令が受信される度に、更に、現在読み出されている格納ユニットが乱数列における最後の格納ユニットであるかどうかが判定される。否定であれば、次の格納ユニットに格納された乱数が更に読み出される。
【００６４】
Ｓ２３０．肯定であれば、乱数列を初期化し、新たな乱数列を生成する。
【００６５】
現在読み出されている格納ユニットが乱数列における最後の格納ユニットである、と判定された場合、即ち、それは、乱数列内の全ての格納ユニットに格納された乱数が読み出されている、ということである。よって、乱数列は初期化される必要があり、新たな乱数列が生成される。
【００６６】
本願のこの実施において、現在の格納ユニットが乱数列における最後の格納ユニットではない、と判定された場合は、乱数取得命令に基づき、対応する格納ユニットに格納された乱数が乱数列内の格納ユニットから直接読み出される。
【００６７】
Ｓ２４０．乱数列内の格納ユニットに対してランダムシャフリングを行う、即ち、乱数列における格納ユニットの位置を周期的にシャフリングする。
【００６８】
本願のこの実施においては、乱数列における格納ユニットの位置が周期的にシャフリングされ、格納ユニットに格納された乱数がランダムにシャフリングされる。これにより、既存の技術においてランダム関数が用いられる場合の、高い確率で反復が発生することに起因する偏りのある分散の問題は解決される。本願のこの実施においては、複数の方法を用いてＮ個の格納ユニットに格納された乱数に対しランダムな交換を行うことができ、乱数がランダムにシャフリングされる。本願のこの実施は上記に限定されない。
【００６９】
Ｓ２５０．前回獲得した格納ユニットの識別子値に基づいて、乱数列内の次の格納ユニットに格納されたデータを選択し、データを現在の獲得対象乱数として用いる。
【００７０】
現在読み出されている格納ユニットの識別子値（即ち、前回読み出された格納ユニットの識別子値）は、乱数取得命令に基づいて獲得され、現在読み出されている格納ユニットの識別子値に基づいて、次の格納ユニットに格納された乱数が読み出される。例えば、乱数は順次読み出されてよい。
【００７１】
対応する乱数は、更に、他の方法を用いて乱数列から読み出せることは注目に値する。本願のこの実施は、対応する乱数を乱数列から順次読み出す方法に限定されない。
【００７２】
本願における乱数生成方法は、ＪＡＶＡ（登録商標）言語におけるプログラムの秒数に基づき定義されてもよい。以下詳細に説明する。
【００７３】
先ず、乱数列を初期化し、識別子値と乱数列の長さとを獲得するよう格納ユニットを定義する。乱数命令が受信された後、現在の格納ユニットが乱数列における最後の格納ユニットであるかどうかを判定する。否定の場合、新たな乱数列が生成される必要がある。次に、乱数列内の格納ユニットが周期的にシャフリングされ、最終的に、前回獲得された格納ユニットの識別子値に基づき、乱数列における次の格納ユニットに格納されたデータが、現在の獲得対象乱数として選択される。
【００７４】
本願における乱数生成方法はＪＡＶＡ（登録商標）言語に基づく実施に限定されるものではなく、他のコンピュータ言語を用いて実施できることは注目に値する。
【００７５】
本願のこの実施における乱数生成方法は、先ず、乱数を格納する格納ユニットをＮ個含む乱数列を生成するステップと、次に、乱数列内の格納ユニットに対してランダムシャフリングを行うステップと、乱数取得命令を受信し、乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すステップとを含む。乱数列内の格納ユニットに対してランダムシャフリングが行われるので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数生成方法は比較的高いランダム性を達成できる。
【００７６】
本願における、乱数列内の格納ユニットに対してランダムシャフリングが行われる工程を当業者がより明確に理解できるように、図３を参照して該工程を以下詳細に説明する。
【００７７】
Ｓ３１０．現在の時刻とランダム関数とに基づきランダム値を生成する。ここで、各格納ユニットは識別子値を有する。識別子値は、各格納ユニットの識別子を相互に区別するために用いられる。本願のこの実施において、初期の状態における（即ち、ランダムシャフリング前の）格納ユニットの識別子値は、格納ユニットに格納された乱数と同じとしてもよい。
【００７８】
ステップＳ３１０で生成されるランダム値と、格納ユニットに格納された乱数とは、概念的に異なることは注目に値する。本ステップで生成されるランダム値は、交換対象格納ユニットの識別子値を特定するために用いる。
【００７９】
ｉが１よりも大きくＮよりも小さい場合、現在の時刻と（ｉ−１）番目のランダム値とに基づきｉ番目のランダム値が生成され、一方、ｉが１に等しい場合、現在の時刻に基づきｉ番目のランダム値が生成される（ただし、ｉは、交換回数の順番である）。換言すれば、ランダム値が初めて生成される場合、ランダム値は現在の時刻に基づき生成される。ランダム値が生成されるのが初めてではない場合、ｉ番目のランダム値が現在の時刻と（ｉ−１）番目のランダム値とに基づいて生成される。
【００８０】
本願のこの実施においては、乱数列が生成された後、各格納ユニットが識別子値を有する。ランダム関数に基づきランダム値が生成され、ランダム値に基づき交換対象格納ユニットの識別子値が生成され、交換対象格納ユニットが特定される。
【００８１】
Ｓ３２０．識別子値と所定の交換ルールとに基づき、交換対象格納ユニットの乱数と目標格納ユニットの乱数とを交換する。
【００８２】
ｉ番目の交換が行われる際、ｉ番目のランダム値に対応する格納ユニットの乱数が（Ｎ＋１−ｉ）番目の格納ユニットの乱数と交換される。
【００８３】
例えば、乱数列が生成された後、各格納ユニットは識別子値を有し、格納ユニットは識別子値に基づき相互に区別されてよい。ｉが１である場合、１番目のランダム値が現在の時刻に基づき生成され、交換対象格納ユニットの識別子値は１番目のランダム値に基づき生成される。１番目のランダム値に対応する格納ユニットの乱数が所定の交換ルールに応じてＮ番目の格納ユニットの乱数と交換される、即ち、１番目のランダム値に対応する格納ユニットの乱数がＮ番目の格納ユニットに格納され、Ｎ番目の格納ユニットの乱数が１番目のランダム値に対応する格納ユニットに格納される。ｉが２である場合、２番目のランダム値が現在の時刻と１番目のランダム値とに基づき生成され、交換対象格納ユニットの識別子値が２番目のランダム値に基づき生成される。２番目のランダム値に対応する格納ユニットの乱数が所定の交換ルールに基づき（Ｎ−１）番目の格納ユニットの乱数と交換される、即ち、２番目のランダム値に対応する格納ユニットの乱数が（Ｎ−１）番目の格納ユニットに格納され、（Ｎ−１）番目の格納ユニットの乱数が２番目のランダム値に対応する格納ユニットに格納される。類推により、同様の操作が、乱数列内の全ての格納ユニットに格納された乱数に対する交換が完了するまで、行われる。前述の実施においては、先ず、１番目の交換演算における識別子値に対応する格納ユニットとＮ番目の格納ユニットとの間で交換が行われる。代替として、本願の他の実施において、１番目の格納ユニットに対して最初に交換が行われてもよい。
【００８４】
例えば、乱数列ｒａｎｄＡｒｒｙ［］が初期化される。乱数列内の各格納ユニットに自然数が割り当てられる。例えば、ｒａｎｄＡｒｒｙ［０］＝１、ｒａｎｄＡｒｒｙ［１］＝２．．．ｒａｎｄＡｒｒｙ［ｎ−１］＝ｎ。乱数列における格納ユニットの位置は周期的にシャフリングされる。例えば、乱数列内の各格納ユニットに格納された値は、ｉ番目から最後の格納ユニットに格納された値と交換されてよく、ｉはｎ−１から漸次減じられる（例えば、ｒａｎｄＡｒｒｙ［１］＝２とｒａｎｄＡｒｒｙ［ｎ−１］＝ｎとの間で交換が行われる）。
【００８５】
本願のこの実施における格納ユニットの乱数を交換する方法は、所定の交換ルールの１つのタイプに過ぎないことは注目に値する。具体的には、所定の交換ルールは実際の要件に基づき設定されてよく、格納ユニットの乱数に対する交換は、様々な交換方法を用いて行われる。
【００８６】
Ｓ３３０．乱数列内の全ての格納ユニットに対して交換が行われたかどうかを判定する。
【００８７】
Ｓ３４０．肯定であれば、各格納ユニットに格納された乱数がランダムにシャフリングされたと特定する。したがって、乱数列は使用可能である。
【００８８】
乱数列内のＮ個の格納ユニットに格納された乱数全てに対して交換が行われた、と特定される。現在読み出されている格納ユニットの識別子値は、乱数取得命令に基づき獲得され、現在読み出されている格納ユニットの識別子値に基づき、次の格納ユニットに格納された乱数が読み出される。
【００８９】
対応する乱数は、他の方法を用いて乱数列から読み出し得ることは注目に値する。本願のこの実施は、対応する乱数を乱数列から順次読み出す方法に限定されない。
【００９０】
本願のこの実施における乱数生成方法は、先ず、乱数を格納する格納ユニットをＮ個含む乱数列を生成するステップと、次に、乱数列内の格納ユニットに対してランダムシャフリングを行うステップと、乱数取得命令を受信し、乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すステップとを含む。乱数列内の格納ユニットに対してランダムシャフリングが行われるので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数生成方法は比較的高いランダム性を達成できる。
【００９１】
本開示の実施は、先に述べた各実施において提供される乱数生成方法に対応する乱数生成デバイスを更に提供する。本開示のこの実施において提供される乱数生成デバイスは実施において提供される乱数生成方法と同一の又は類似の技術的特徴を有するので、乱数生成方法の先に述べた各実施は、この実施において提供される乱数生成デバイスにも適用可能であり、この実施において詳細な説明は行わない。図４に示すように、乱数生成デバイスは、生成モジュール１１０と、ランダムシャフリングモジュール１２０と、読み出しモジュール１３０とを含んでよい。
【００９２】
生成モジュール１１０は乱数列を生成するように構成され、乱数列はＮ個の格納ユニットを含み、格納ユニットのそれぞれは乱数を格納し、Ｎは正の整数である。
【００９３】
本願の実施において、Ｎ個の格納ユニットは異なる乱数を格納する。
【００９４】
ランダムシャフリングモジュール１２０は、乱数列内の格納ユニットに対してランダムシャフリングを行うように構成される。
【００９５】
読み出しモジュール１３０は、乱数取得命令を受信し、乱数取得命令に基づいて、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すように構成される。
【００９６】
本願の実施において、図５は、本願の他の実施に係る乱数生成デバイスを例示する概略構造図である。即ち、図５に示されるように、図４に基づき、ランダムシャフリングモジュール１２０は、識別子値生成サブモジュール１２０１と交換サブモジュール１２０２とを含む。本願の実施において、識別子値生成サブモジュール１２０１は、ランダム関数に基づきランダム値を生成し、ランダム値に基づき交換対象格納ユニットの識別子値を生成するように構成される。交換サブモジュール１２０２は、識別子値と所定の交換ルールとに基づき、交換対象格納ユニットの乱数と目標格納ユニットの乱数とを交換するように構成される。
【００９７】
本願の実施において、ｉが１よりも大きくＮよりも小さい場合、識別子値生成サブモジュール１２０１は現在の時刻と（ｉ−１）番目のランダム値とに基づきｉ番目のランダム値を生成する（ただし、ｉは交換回数の順番である）一方、ｉが１に等しい場合、識別子値生成サブモジュール１２０１は、現在の時刻に基づきｉ番目のランダム値を生成する。
【００９８】
本願の実施において、所定の交換ルールは、ｉ番目の交換が行われる際に、ｉ番目のランダム値に対応する格納ユニットの乱数が（Ｎ＋１−ｉ）番目の格納ユニットの乱数と交換されることである。
【００９９】
本願の実施において、乱数取得命令が受信された後、現在の格納ユニットが乱数列における最後の格納ユニットであるかどうかを判定する。否定であれば、次の格納ユニットに格納された乱数が読み出され、肯定であれば、新たな乱数列が生成される必要がある。
【０１００】
本願の実施において、図６は、本願の他の実施に係る乱数生成デバイスを例示する概略構造図である。図４に基づき、読み出しモジュール１３０は、取得サブモジュール１３０１と読み出しサブモジュール１３０２とを含む。
【０１０１】
取得サブモジュール１３０１は、乱数取得命令に基づき現在読み出されている格納ユニットの識別子値を獲得するように構成される。読み出しサブモジュール１３０２は、現在読み出されている格納ユニットの識別子値に基づき、次の格納ユニットに格納された乱数を読み出すように構成される。
【０１０２】
本願のこの実施における乱数生成デバイスにおいて、生成モジュールが、乱数を格納する格納ユニットをＮ個含む乱数列を生成し、次に、ランダムシャフリングモジュールが、乱数列内の格納ユニットに対してランダムシャフリングを行い、読み出しモジュールが、乱数取得命令を受信し、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すことができる。ランダムシャフリングモジュールが乱数列内の格納ユニットに対してランダムシャフリングを行うので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数生成デバイスは比較的高いランダム性を達成できる。
【０１０３】
図７は、本願の実施に係る乱数取得方法を例示するフローチャートである。本願のこの実施において例示される乱数取得方法を、取得の観点から説明する。図７に示すように、乱数取得方法は以下の各ステップを含む。
【０１０４】
Ｓ７１０．乱数取得命令を受信し、乱数列を獲得する。ここで、乱数列はＮ個の格納ユニットを含み、格納ユニットのそれぞれは乱数を格納し、乱数列におけるＮ個の格納ユニットの位置はランダムシャフリングを通じて特定され、Ｎは正の整数である。
【０１０５】
本願のこの実施において、Ｎ個の格納ユニットは異なる乱数を格納する。
【０１０６】
本願のこの実施においては、各格納ユニットに格納される乱数が他の格納ユニットに格納される乱数と異なるように、Ｎ個の格納ユニットがそれぞれ１からＮ個の整数を格納してよい。
【０１０７】
本願の他の実施において、乱数列の長さは設定可能であり、要求に応じて事前に設定される。
【０１０８】
本願のこの実施においては、乱数列が生成された後、各格納ユニットが識別子値を有する。ランダム関数に基づきランダム値が生成され、ランダム値に基づき交換対象格納ユニットの識別子値が生成され、交換対象格納ユニットが特定される。
【０１０９】
本願のこの実施においては、識別子値と所定の交換ルールとに基づき、交換対象格納ユニットの乱数と目標格納ユニットの乱数とが交換される。
【０１１０】
本願のこの実施における格納ユニットの乱数を交換する方法は、所定の交換ルールの１つのタイプに過ぎないことは注目に値する。即ち、所定の交換ルールは実際の要件に基づき設定されてよく、格納ユニットの乱数に対する交換は、様々な交換方法を用いて行われる。
【０１１１】
Ｓ７２０．乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を獲得する。
【０１１２】
本願の具体的な実施において、乱数取得命令が受信された後、現在読み出されている格納ユニットの識別子値（即ち、前回読み出された格納ユニットの識別子値）が乱数取得命令に基づき獲得され、現在読み出されている格納ユニットの識別子値に基づき、次の格納ユニットに格納された乱数が読み出される。
【０１１３】
本願のこの実施における乱数取得方法は、先ず、乱数取得命令を受信するステップと、次に、乱数列を獲得し、乱数列におけるＮ個の格納ユニットの位置を、ランダムシャフリングを通じて特定するステップと、受信した乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すステップとを含む。乱数列内の格納ユニットに対してランダムシャフリングが行われるため、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数取得方法は比較的高いランダム性を達成できる。
【０１１４】
本開示の実施は、先に述べた各実施において提供される乱数取得方法に対応する乱数取得デバイスを更に提供する。本開示のこの実施において提供される乱数取得デバイスは先に述べた各実施において提供される乱数取得方法と同一の又は類似の技術的特徴を有する。よって、乱数取得方法の各実施は、この実施において提供される乱数取得デバイスにも適用可能である。この実施において詳細は説明しない。図８に示すように、乱数取得デバイスは、受信モジュール２１０と、乱数列取得モジュール２２０と、乱数取得モジュール２３０とを含んでよい。
【０１１５】
受信モジュール２１０は、乱数取得命令を受信するように構成される。
【０１１６】
乱数列取得モジュール２２０は、乱数列を獲得するように構成され、乱数列はＮ個の格納ユニットを含み、格納ユニットのそれぞれは乱数を格納し、乱数列におけるＮ個の格納ユニットの位置はランダムシャフリングを通じて特定され、Ｎは正の整数である。
【０１１７】
本願の実施において、Ｎ個の格納ユニットは異なる乱数を格納する。
【０１１８】
乱数取得モジュール２３０は、乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を獲得するように構成される。
【０１１９】
本願の実施において、図９は、本願の他の実施に係る乱数取得デバイスを例示する概略構造図である。図８に基づき、図９に示される乱数取得モジュール２３０は、乱数取得命令に基づき現在読み出されている格納ユニットの識別子値を獲得するように構成された第１の取得サブモジュール２３０１と、現在読み出されている格納ユニットの識別子値に基づき、次の格納ユニットに格納された乱数を獲得するように構成された第２の取得サブモジュール２３０２とを含む。
【０１２０】
本願のこの実施における乱数取得デバイスにおいて、先ず、受信モジュールが乱数取得命令を受信し、次に、乱数列取得モジュールが乱数列を獲得し、乱数列におけるＮ個の格納ユニットの位置がランダムシャフリングを通じて特定され、乱数取得モジュールが、受信された乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出す。乱数列内の格納ユニットに対してランダムシャフリングが行われるので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数取得デバイスは比較的高いランダム性を達成できる。
【０１２１】
本願の説明において、「第１」及び「第２」という用語は単に説明のために使用されており、示された技術的特徴の数の相対的重要性又は暗示的表示を示唆又は含意するものとして理解することはできない。したがって、「第１」又は「第２」によって修飾された特性は、明示的又は暗示的に１つ又は複数の特徴を含むことができる。本願の記載において、「複数の」は、特に明記しない限り、少なくとも２つ、例えば２つ又は３つを意味する。
【０１２２】
本明細書の記述において、「実施」「いくつかの実施」「例」「特定の例」及び「いくつかの例」などの参照用語は、実施又は例を参照して説明された特定の特徴、構造、材料、又は特性が、本願の１つ又は複数の実施又は例に含まれる、ということを意味する。本明細書では、前述の用語は必ずしも同一の実施又は例について記載されるわけではない。更に、記載された特定の特徴、構造、材料、又は特性は、任意の１つ又は複数の実施又は例において適切な方法で組み合わせることができる。更に、当業者であれば、本明細書に記載された異なる実施又は例の矛盾しない特徴を組み合わせることができる。
【０１２３】
フローチャート又は別の方法で記載された任意のプロセス又は方法の説明は、実行可能命令のモジュール、セグメント、又はコードの一部として理解することができ、実行可能命令は特定の論理機能又はプロセスを実施するための１つ又は複数のステップを含み、本願の実施は別の実施をも含み、別の実施において機能は図示又は議論された順序とは異なる順序で実行できる、例えば、関連機能は同時に又は逆の順序で実行される。本願の実施に関連する当業者には理解されるべきである。
【０１２４】
本願の一部は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組合せによって実施され得ることを理解されたい。前述の実施では、メモリに格納され、適切な命令実行システム又はファームウェアによって実行されるソフトウェアを使用することによって、複数のステップ又は方法を実施することができる。例えば、当該技術分野における以下の技術のいずれか１つ又は組み合わせを用いて実施可能なハードウェアを用いることによってステップ又は方法を実現するのであれば実施することができる：データ信号の論理機能を実施する論理ゲート回路を含むディスクリート論理回路、適切な組合せ論理ゲート回路、プログラマブルゲートアレイ（ＰＧＡ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）などを有する特定用途向け集積回路。
【０１２５】
当業者であれば、方法の実施におけるステップの全部又は一部が、関連するハードウェアを指示するプログラムによって実施できることを理解することができる。このプログラムは、コンピュータ可読記憶媒体に格納することができる。プログラムが実行されると、方法の実施のステップの１つ又は複数の組み合わせが実行される。
【０１２６】
更に、本願の実施における機能ユニットは、１つの処理モジュールに統合することができ、又は各ユニットを物理的に単独で存在させることができ、又は２つ以上のユニットを１つのモジュールに統合することができる。統合モジュールは、ハードウェアの形態で実施することができ、又はソフトウェア機能モジュールの形態で実施することができる。統合モジュールがソフトウェア機能モジュールの形態で実施され、独立した製品として販売又は使用される場合、統合モジュールはコンピュータ可読記憶媒体に格納することができる。
【０１２７】
前述の記憶媒体は、読み出し専用メモリ、磁気ディスク、光ディスクなどであってもよい。本願の実施を上記に示し説明したが、前述の実施は例示であり、本願に対する限定として解釈することはできない。当業者であれば、本願の範囲内において、前述の実施に対して変更、修正、置換、及び修正を行うことができる。
【図１】
2019512805.tif 000003
【図２】
2019512805.tif 000004
【図３】
2019512805.tif 000005
【図４】
2019512805.tif 000006
【図５】
2019512805.tif 000007
【図６】
2019512805.tif 000008
【図７】
2019512805.tif 000009
【図８】
2019512805.tif 000010
【図９】
2019512805.tif 000011
【国際調査報告】
2019512805.tif 000012
2019512805.tif 000013
2019512805.tif 000014
2019512805.tif 000015