JP6793747B2 - 乱数生成及び取得の方法及びデバイス - Google Patents

乱数生成及び取得の方法及びデバイス Download PDF

Info

Publication number
JP6793747B2
JP6793747B2 JP2018549163A JP2018549163A JP6793747B2 JP 6793747 B2 JP6793747 B2 JP 6793747B2 JP 2018549163 A JP2018549163 A JP 2018549163A JP 2018549163 A JP2018549163 A JP 2018549163A JP 6793747 B2 JP6793747 B2 JP 6793747B2
Authority
JP
Japan
Prior art keywords
random number
storage unit
random
number sequence
sequence
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018549163A
Other languages
English (en)
Other versions
JP2019512805A (ja
JP2019512805A5 (ja
Inventor
ヴェン,ジャシャン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Publication of JP2019512805A publication Critical patent/JP2019512805A/ja
Publication of JP2019512805A5 publication Critical patent/JP2019512805A5/ja
Application granted granted Critical
Publication of JP6793747B2 publication Critical patent/JP6793747B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Software Systems (AREA)
  • Indexing, Searching, Synchronizing, And The Amount Of Synchronization Travel Of Record Carriers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)
  • Read Only Memory (AREA)

Description

本願は、2016年3月17日に出願され「乱数生成及び取得の方法及びデバイス」と題された中国特許出願第201610152995.2号の優先権を主張し、上記中国特許出願は、参照によってその全体が本明細書に組み込まれる。
本願は、コンピュータ技術の分野に関し、特に、乱数生成及び取得の方法及びデバイスに関する。
乱数がコンピュータの分野において広く適用されるのに伴って、乱数の生成に対する要求が高まっている。現在、一般に用いられている乱数生成方法は主に2種類ある。一方はソフトウェアによる方法であり、システムの時刻を乱数生成のシードとして用い、その上でシステムの機能に基づき乱数を生成する。他方はハードウェアによる方法であり、乱数を生成するハードウェアデバイスがランダム信号に基づき乱数を生成するように設計されている。
しかしながら、ソフトウェアで用いられるシステムのデフォルトの乱数生成方法には、同一の時点(同一の秒又は同一のミリ秒)で生成される乱数は反復率が高いことから乱数の分散に偏りが生ずる、即ち、疑似乱数が生成されてしまう、という欠点がある。コンピュータアプリケーションシステムにおいては、乱数を生成するためのシードとして時刻が用いられる。よって、複数の時刻シードが同一であることにより比較的短時間(例えば同一のミリ秒や秒を含む期間)内に生成される乱数は反復率が高く、その結果、乱数の分散に偏りが生じてしまう。
本願の目的は、先に述べた技術的問題の1つを一定程度まで解決することである。
そのため、本願の第1の目的は、乱数生成方法を提供することである。この方法は、乱数を格納する格納ユニットをN個含む、乱数列を生成するステップと、次に、乱数列内の格納ユニットに対してランダムシャフリングを行うステップと、乱数取得命令を受信した場合、乱数取得命令に基づき、乱数列内の対応する格納ユニットから乱数を読み出すステップとを含む。本願の実施においては、比較的短い単位時間で獲得される複数の乱数の反復率が低く、偏りのない分散が得られる。したがって、本願における乱数生成方法は比較的高いランダム性を達成できる。
本願の第2の目的は、乱数生成デバイスを提供することである。
本願の第3の目的は、乱数取得方法を提供することである。
本願の第4の目的は、乱数取得デバイスを提供することである。
前述の目的を達成するために、本願の第1の実施の形態は乱数生成方法を提供し、前記方法は:乱数列を生成するステップであって、前記乱数列はN個の格納ユニットを含み、前記格納ユニットのそれぞれは乱数を格納し、Nは正の整数である、前記生成するステップと;前記乱数列内の前記格納ユニットに対してランダムシャフリングを行うステップと;乱数取得命令を受信し、前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を読み出すステップと;を含む。
本願の実施における乱数生成方法は、先ず、乱数を格納する格納ユニットをN個含む乱数列を生成するステップと、次に、乱数列内の格納ユニットに対してランダムシャフリングを行うステップと、乱数取得命令を受信し、乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すステップとを含む。乱数列内の格納ユニットに対してランダムシャフリングがなされるので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数生成方法は比較的高いランダム性を達成できる。
本願の実施において、N個の格納ユニットは異なる乱数を格納する。
本願の実施では、前記乱数生成方法において、前記格納ユニットは各々が識別子値を有し;前記乱数列内の前記格納ユニットに対してランダムシャフリングを行う前記ステップは:ランダム関数に基づきランダム値を生成し、前記ランダム値に基づき交換対象格納ユニットの識別子値を生成するステップと;前記識別子値と所定の交換ルールとに基づき、前記交換対象格納ユニットの乱数と、目標格納ユニットの乱数とを交換するステップと;を含む。
本願の実施では、前記乱数生成方法において、ランダム関数に基づきランダム値を生成する前記ステップは:iが1よりも大きくNよりも小さい場合、現在の時刻と(i−1)番目のランダム値とに基づきi番目のランダム値を生成するステップであって、iは交換回数の順番である、前記生成するステップ;又は、iが1に等しい場合、現在の時刻に基づきi番目のランダム値を生成するステップ;を含む。
本願の実施では、前記所定の交換ルールは:i番目の交換が行われる際、i番目のランダム値に対応する格納ユニットの乱数が(N+1−i)番目の格納ユニットの乱数と交換されるということである。
本願の実施では、前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を読み出す前記ステップは:前記乱数取得命令に基づき現在読み出されている格納ユニットの識別子値を獲得するステップと;前記現在読み出されている格納ユニットの前記識別子値に基づき、次の格納ユニットに格納された乱数を読み出すステップと;を含む。
前述の目的を達成するために、本願の第2の実施の形態は乱数生成デバイスを提供し、前記デバイスは:乱数列を生成するように構成された生成モジュールであって、前記乱数列はN個の格納ユニットを含み、前記格納ユニットのそれぞれは乱数を格納し、Nは正の整数である、前記生成モジュールと;前記乱数列内の前記格納ユニットに対してランダムシャフリングを行うように構成されたランダムシャフリングモジュールと;乱数取得命令を受信し、前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を読み出すように構成された読み出しモジュールと;を含む。
本願の実施における乱数生成デバイスにおいて、先ず、生成モジュールが、乱数を格納する格納ユニットをN個含む乱数列を生成し、次に、ランダムシャフリングモジュールが、乱数列内の格納ユニットに対してランダムシャフリングを行い、読み出しモジュールが、乱数取得命令を受信し、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すことができる。ランダムシャフリングモジュールが乱数列内の格納ユニットに対してランダムシャフリングを行うので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数生成デバイスは比較的高いランダム性を達成できる。
本願の実施において、N個の格納ユニットは異なる乱数を格納する。
本願の実施では、前記乱数生成デバイスにおいて、前記格納ユニットは各々が識別子値を有し、前記ランダムシャフリングモジュールは:ランダム関数に基づきランダム値を生成し、前記ランダム値に基づき交換対象格納ユニットの識別子値を生成するように構成された識別子値生成サブモジュールと;前記識別子値と所定の交換ルールとに基づき、前記交換対象格納ユニットの乱数と目標格納ユニットの乱数とを交換するように構成された交換サブモジュールと;を含む。
本願の実施では、前記乱数生成デバイスにおいて、iが1よりも大きくNよりも小さい場合、前記識別子値生成サブモジュールが、現在の時刻と(i−1)番目のランダム値とに基づきi番目のランダム値を生成し、ここでiは交換回数の順番であり;又は、iが1に等しい場合、前記識別子値生成サブモジュールが、現在の時刻に基づきi番目のランダム値を生成する。
本願の実施では、前記所定の交換ルールは:i番目の交換が行われる際、i番目のランダム値に対応する格納ユニットの乱数が(N+1−i)番目の格納ユニットの乱数と交換されるということである。
本願の実施では、前記読み出しモジュールは:前記乱数取得命令に基づき現在読み出されている格納ユニットの識別子値を獲得するように構成された取得サブモジュールと;前記現在読み出されている格納ユニットの前記識別子値に基づき、次の格納ユニットに格納された乱数を読み出すように構成された読み出しサブモジュールと;を含む。
前述の目的を達成するために、本願の第3の実施の形態は乱数取得方法を提供し、前記方法は:乱数取得命令を受信して乱数列を獲得するステップであって、前記乱数列はN個の格納ユニットを含み、前記格納ユニットのそれぞれは乱数を格納し、前記乱数列における前記N個の格納ユニットの位置はランダムシャフリングを通じて特定され、Nは正の整数である、前記獲得するステップと;前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を獲得するステップと;を含む。
本願の実施における乱数取得方法は、先ず、乱数取得命令を受信するステップと、次に、乱数列を獲得し、乱数列におけるN個の格納ユニットの位置を、ランダムシャフリングを通じて特定するステップと、乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すステップとを含む。乱数列内の格納ユニットに対してランダムシャフリングが行われるので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数取得方法は比較的高いランダム性を達成できる。
本願の実施において、N個の格納ユニットは異なる乱数を格納する。
本願の実施では、前記乱数取得方法において、前記格納ユニットは各々が識別子値を有し、以下のステップを用いて前記乱数列における前記N個の格納ユニットの位置に対してランダムシャフリングが実行される:ランダム関数に基づきランダム値を生成し、前記ランダム値に基づき交換対象格納ユニットの識別子値を生成するステップと;前記識別子値と所定の交換ルールとに基づき、前記交換対象格納ユニットの乱数と目標格納ユニットの乱数とを交換するステップ。
本願の実施では、前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を獲得する前記ステップは:前記乱数取得命令に基づき現在読み出されている格納ユニットの識別子値を獲得するステップと;前記現在読み出されている格納ユニットの前記識別子値に基づき、次の格納ユニットに格納された乱数を読み出すステップと;を含む。
前述の目的を達成するために、本願の第4の実施の形態は乱数取得デバイスを提供し、前記デバイスは:乱数取得命令を受信するように構成された受信モジュールと;乱数列を獲得するように構成された乱数列取得モジュールであって、前記乱数列はN個の格納ユニットを含み、前記格納ユニットのそれぞれは乱数を格納し、前記乱数列におけるN個の前記格納ユニットの位置はランダムシャフリングを通じて特定され、Nは正の整数である、前記乱数列取得モジュールと;前記乱数取得命令に基づき、前記乱数列内の対応する格納ユニットから、前記格納ユニットに格納された乱数を獲得するように構成された乱数取得モジュールと;を含む。
本願の実施における乱数取得デバイスにおいては、先ず、受信モジュールが乱数取得命令を受信し、次に、乱数列取得モジュールが乱数列を獲得し、乱数列におけるN個の格納ユニットの位置がランダムシャフリングを通じて特定され、乱数取得モジュールが、受信された乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出す。乱数列内の格納ユニットに対してランダムシャフリングが行われるので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数取得デバイスは比較的高いランダム性を達成できる。
本願の実施では、前記N個の格納ユニットが異なる乱数を格納する。
本願の実施では、前記乱数取得モジュールは:前記乱数取得命令に基づき現在読み出されている格納ユニットの識別子値を獲得するように構成された第1の取得サブモジュールと;前記現在読み出されている格納ユニットの前記識別子値に基づき、次の格納ユニットに格納された乱数を獲得するように構成された第2の取得サブモジュールと;を含む。
本願の追加の態様及び利点は、以下の説明において部分的に提示される。それらの一部は、以下の説明から明らかになろう、又は、本願を実施することにより理解できるであろう。
本願の前述の及び/又は追加の態様及び利点は、添付の図面を参照することで、実施の説明において明確となり理解し易くなるであろう。
図1は、本願の実施に係る乱数生成方法を例示するフローチャートである。
図2は、本明の実施に係る乱数取得工程を例示するフローチャートである。
図3は、本願の実施に係る、乱数列内の格納ユニットに対してランダムシャフリングが行われる工程を例示するフローチャートである。
図4は、本願の実施に係る乱数生成デバイスを例示する概略構造図である。
図5は、本願の他の実施に係る乱数生成デバイスを例示する概略構造図である。
図6は、本願の別の実施に係る乱数生成デバイスを例示する概略構造図である。
図7は、本願の実施に係る乱数取得方法を例示するフローチャートである。
図8は、本願の実施に係る乱数取得デバイスを例示する概略構造図である。
図9は、本願の他の実施に係る乱数取得デバイスを例示する概略構造図である。
以下に、本願の実施を詳細に説明する。実施例は、添付図面に示されている。同一又は類似の参照番号は、同一又は類似の要素、又は、同一又は類似の機能を有する要素を示す。 添付の図面を参照して以下に説明される実施は例であり、本願を限定するのではなく本願を説明することを意図している。
本願においては、乱数列内の乱数がランダムにシャフリングされるよう、乱数列内の格納ユニットに対してランダムシャフリングが行われる。これにより、従来のランダム関数が用いられる場合の、高い反復率に起因する偏りのある分散の問題が解決される。乱数を獲得する必要がある場合、乱数列から対応する乱数を獲得できる。
図1は、本願の実施に係る乱数生成方法を例示するフローチャートである。
図1に示されるように、本願のこの実施における乱数生成方法は以下の各ステップを含む。
S110.乱数列を生成する。ここで、乱数列はN個の格納ユニットを含み、格納ユニットのそれぞれは乱数を格納し、Nは正の整数である。
本願のこの実施において、N個の格納ユニットは異なる乱数を格納する。
本願のこの実施において、生成された乱数列内の格納ユニットは、対応する異なる乱数を格納することが分かる。例えば、1つの格納ユニットが乱数2を格納する場合、他の格納ユニットが乱数2を格納することはない。
本願のこの実施においては、各格納ユニットに格納される乱数が他の格納ユニットに格納される乱数と異なるように、N個の格納ユニットがそれぞれ1からN個の整数を格納してよい。
本願の他の実施において、乱数列の長さは設定可能であり、要求に応じて事前に設定される。
S120.乱数列内の格納ユニットに対してランダムシャフリングを行う。
本願のこの実施におけるランダムシャフリングは、乱数列内のN個の格納ユニットに格納された乱数にランダムな交換を行うことを意味し、その結果、格納ユニットに格納された乱数がランダムにシャフリングされることは注目に値する。これにより、既存の技術においてランダム関数が用いられる場合の、高い確率で反復が発生することに起因する偏りのある分散の問題は解決される。本願のこの実施においては、複数の方法を用いてN個の格納ユニットに格納された乱数をランダムに交換できる。それらの方法は、後述の実施において詳細に説明する。当業者であれば、複数の方法を用いて、乱数列に格納された乱数に対しランダムシャフリングを行い、乱数をランダムにシャフリングすることが可能であろう。したがって、本願は、本願の以下の実施において記載されるランダム交換のアルゴリズムに限定されない。前述の目的を達成できるいずれのアルゴリズムも、本願の保護の範囲に含まれる。
S130.乱数取得命令を受信し、乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出す。
本願のこの実施において、乱数取得命令が受信された後、対応する乱数が乱数列から順次読み出されてもよく、ランダムに読み出されてもよい。当然ながら、本願のこの実施において、対応する乱数は、他の方法を用いて乱数列から読み出してもよい。
本願の具体的な実施において、乱数取得命令が受信された後、現在読み出されている格納ユニットの識別子値(即ち、前回読み出された格納ユニットの識別子値)が乱数取得命令に基づき獲得され、現在読み出されている格納ユニットの識別子値に基づき、次の格納ユニットに格納された乱数が読み出される。
乱数取得命令が受信される度に、更に、読み出されている格納ユニットが乱数列における最後の格納ユニットであるかどうかが判定される。否定であれば、次の格納ユニットに格納された乱数が更に読み出される。肯定であれば、新たな乱数列が生成される必要がある、即ち、ステップS110が実行される。
本願のこの実施における乱数生成方法は、先ず、乱数を格納する格納ユニットをN個含む乱数列を生成するステップと、次に、乱数列内の格納ユニットに対してランダムシャフリングを行うステップと、乱数取得命令を受信し、乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すステップとを含む。乱数列内の格納ユニットに対してランダムシャフリングが行われるので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数生成方法は比較的高いランダム性を達成できる。
当業者が工程をより明確に理解できるように、図2を参照して本願における乱数取得工程を以下詳細に説明する。
S210.乱数取得命令を受信する。
S220.現在読み出されている格納ユニットが乱数列における最後の格納ユニットであるかどうかを判定する。
乱数取得命令が受信される度に、更に、現在読み出されている格納ユニットが乱数列における最後の格納ユニットであるかどうかが判定される。否定であれば、次の格納ユニットに格納された乱数が更に読み出される。
S230.肯定であれば、乱数列を初期化し、新たな乱数列を生成する。
現在読み出されている格納ユニットが乱数列における最後の格納ユニットである、と判定された場合、即ち、それは、乱数列内の全ての格納ユニットに格納された乱数が読み出されている、ということである。よって、乱数列は初期化される必要があり、新たな乱数列が生成される。
本願のこの実施において、現在の格納ユニットが乱数列における最後の格納ユニットではない、と判定された場合は、乱数取得命令に基づき、対応する格納ユニットに格納された乱数が乱数列内の格納ユニットから直接読み出される。
S240.乱数列内の格納ユニットに対してランダムシャフリングを行う、即ち、乱数列における格納ユニットの位置を周期的にシャフリングする。
本願のこの実施においては、乱数列における格納ユニットの位置が周期的にシャフリングされ、格納ユニットに格納された乱数がランダムにシャフリングされる。これにより、既存の技術においてランダム関数が用いられる場合の、高い確率で反復が発生することに起因する偏りのある分散の問題は解決される。本願のこの実施においては、複数の方法を用いてN個の格納ユニットに格納された乱数に対しランダムな交換を行うことができ、乱数がランダムにシャフリングされる。本願のこの実施は上記に限定されない。
S250.前回獲得した格納ユニットの識別子値に基づいて、乱数列内の次の格納ユニットに格納されたデータを選択し、データを現在の獲得対象乱数として用いる。
現在読み出されている格納ユニットの識別子値(即ち、前回読み出された格納ユニットの識別子値)は、乱数取得命令に基づいて獲得され、現在読み出されている格納ユニットの識別子値に基づいて、次の格納ユニットに格納された乱数が読み出される。例えば、乱数は順次読み出されてよい。
対応する乱数は、更に、他の方法を用いて乱数列から読み出せることは注目に値する。本願のこの実施は、対応する乱数を乱数列から順次読み出す方法に限定されない。
本願における乱数生成方法は、JAVA(登録商標)言語におけるプログラムの秒数に基づき定義されてもよい。以下詳細に説明する。
先ず、乱数列を初期化し、識別子値と乱数列の長さとを獲得するよう格納ユニットを定義する。乱数命令が受信された後、現在の格納ユニットが乱数列における最後の格納ユニットであるかどうかを判定する。否定の場合、新たな乱数列が生成される必要がある。次に、乱数列内の格納ユニットが周期的にシャフリングされ、最終的に、前回獲得された格納ユニットの識別子値に基づき、乱数列における次の格納ユニットに格納されたデータが、現在の獲得対象乱数として選択される。
本願における乱数生成方法はJAVA(登録商標)言語に基づく実施に限定されるものではなく、他のコンピュータ言語を用いて実施できることは注目に値する。
本願のこの実施における乱数生成方法は、先ず、乱数を格納する格納ユニットをN個含む乱数列を生成するステップと、次に、乱数列内の格納ユニットに対してランダムシャフリングを行うステップと、乱数取得命令を受信し、乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すステップとを含む。乱数列内の格納ユニットに対してランダムシャフリングが行われるので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数生成方法は比較的高いランダム性を達成できる。
本願における、乱数列内の格納ユニットに対してランダムシャフリングが行われる工程を当業者がより明確に理解できるように、図3を参照して該工程を以下詳細に説明する。
S310.現在の時刻とランダム関数とに基づきランダム値を生成する。ここで、各格納ユニットは識別子値を有する。識別子値は、各格納ユニットの識別子を相互に区別するために用いられる。本願のこの実施において、初期の状態における(即ち、ランダムシャフリング前の)格納ユニットの識別子値は、格納ユニットに格納された乱数と同じとしてもよい。
ステップS310で生成されるランダム値と、格納ユニットに格納された乱数とは、概念的に異なることは注目に値する。本ステップで生成されるランダム値は、交換対象格納ユニットの識別子値を特定するために用いる。
iが1よりも大きくNよりも小さい場合、現在の時刻と(i−1)番目のランダム値とに基づきi番目のランダム値が生成され、一方、iが1に等しい場合、現在の時刻に基づきi番目のランダム値が生成される(ただし、iは、交換回数の順番である)。換言すれば、ランダム値が初めて生成される場合、ランダム値は現在の時刻に基づき生成される。ランダム値が生成されるのが初めてではない場合、i番目のランダム値が現在の時刻と(i−1)番目のランダム値とに基づいて生成される。
本願のこの実施においては、乱数列が生成された後、各格納ユニットが識別子値を有する。ランダム関数に基づきランダム値が生成され、ランダム値に基づき交換対象格納ユニットの識別子値が生成され、交換対象格納ユニットが特定される。
S320.識別子値と所定の交換ルールとに基づき、交換対象格納ユニットの乱数と目標格納ユニットの乱数とを交換する。
i番目の交換が行われる際、i番目のランダム値に対応する格納ユニットの乱数が(N+1−i)番目の格納ユニットの乱数と交換される。
例えば、乱数列が生成された後、各格納ユニットは識別子値を有し、格納ユニットは識別子値に基づき相互に区別されてよい。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番目の格納ユニットに対して最初に交換が行われてもよい。
例えば、乱数列randArry[]が初期化される。乱数列内の各格納ユニットに自然数が割り当てられる。例えば、randArry[0]=1、randArry[1]=2...randArry[n−1]=n。乱数列における格納ユニットの位置は周期的にシャフリングされる。例えば、乱数列内の各格納ユニットに格納された値は、i番目から最後の格納ユニットに格納された値と交換されてよく、iはn−1から漸次減じられる(例えば、randArry[1]=2とrandArry[n−1]=nとの間で交換が行われる)。
本願のこの実施における格納ユニットの乱数を交換する方法は、所定の交換ルールの1つのタイプに過ぎないことは注目に値する。具体的には、所定の交換ルールは実際の要件に基づき設定されてよく、格納ユニットの乱数に対する交換は、様々な交換方法を用いて行われる。
S330.乱数列内の全ての格納ユニットに対して交換が行われたかどうかを判定する。
S340.肯定であれば、各格納ユニットに格納された乱数がランダムにシャフリングされたと特定する。したがって、乱数列は使用可能である。
乱数列内のN個の格納ユニットに格納された乱数全てに対して交換が行われた、と特定される。現在読み出されている格納ユニットの識別子値は、乱数取得命令に基づき獲得され、現在読み出されている格納ユニットの識別子値に基づき、次の格納ユニットに格納された乱数が読み出される。
対応する乱数は、他の方法を用いて乱数列から読み出し得ることは注目に値する。本願のこの実施は、対応する乱数を乱数列から順次読み出す方法に限定されない。
本願のこの実施における乱数生成方法は、先ず、乱数を格納する格納ユニットをN個含む乱数列を生成するステップと、次に、乱数列内の格納ユニットに対してランダムシャフリングを行うステップと、乱数取得命令を受信し、乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すステップとを含む。乱数列内の格納ユニットに対してランダムシャフリングが行われるので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数生成方法は比較的高いランダム性を達成できる。
本開示の実施は、先に述べた各実施において提供される乱数生成方法に対応する乱数生成デバイスを更に提供する。本開示のこの実施において提供される乱数生成デバイスは実施において提供される乱数生成方法と同一の又は類似の技術的特徴を有するので、乱数生成方法の先に述べた各実施は、この実施において提供される乱数生成デバイスにも適用可能であり、この実施において詳細な説明は行わない。図4に示すように、乱数生成デバイスは、生成モジュール110と、ランダムシャフリングモジュール120と、読み出しモジュール130とを含んでよい。
生成モジュール110は乱数列を生成するように構成され、乱数列はN個の格納ユニットを含み、格納ユニットのそれぞれは乱数を格納し、Nは正の整数である。
本願の実施において、N個の格納ユニットは異なる乱数を格納する。
ランダムシャフリングモジュール120は、乱数列内の格納ユニットに対してランダムシャフリングを行うように構成される。
読み出しモジュール130は、乱数取得命令を受信し、乱数取得命令に基づいて、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すように構成される。
本願の実施において、図5は、本願の他の実施に係る乱数生成デバイスを例示する概略構造図である。即ち、図5に示されるように、図4に基づき、ランダムシャフリングモジュール120は、識別子値生成サブモジュール1201と交換サブモジュール1202とを含む。本願の実施において、識別子値生成サブモジュール1201は、ランダム関数に基づきランダム値を生成し、ランダム値に基づき交換対象格納ユニットの識別子値を生成するように構成される。交換サブモジュール1202は、識別子値と所定の交換ルールとに基づき、交換対象格納ユニットの乱数と目標格納ユニットの乱数とを交換するように構成される。
本願の実施において、iが1よりも大きくNよりも小さい場合、識別子値生成サブモジュール1201は現在の時刻と(i−1)番目のランダム値とに基づきi番目のランダム値を生成する(ただし、iは交換回数の順番である)一方、iが1に等しい場合、識別子値生成サブモジュール1201は、現在の時刻に基づきi番目のランダム値を生成する。
本願の実施において、所定の交換ルールは、i番目の交換が行われる際に、i番目のランダム値に対応する格納ユニットの乱数が(N+1−i)番目の格納ユニットの乱数と交換されることである。
本願の実施において、乱数取得命令が受信された後、現在の格納ユニットが乱数列における最後の格納ユニットであるかどうかを判定する。否定であれば、次の格納ユニットに格納された乱数が読み出され、肯定であれば、新たな乱数列が生成される必要がある。
本願の実施において、図6は、本願の他の実施に係る乱数生成デバイスを例示する概略構造図である。図4に基づき、読み出しモジュール130は、取得サブモジュール1301と読み出しサブモジュール1302とを含む。
取得サブモジュール1301は、乱数取得命令に基づき現在読み出されている格納ユニットの識別子値を獲得するように構成される。読み出しサブモジュール1302は、現在読み出されている格納ユニットの識別子値に基づき、次の格納ユニットに格納された乱数を読み出すように構成される。
本願のこの実施における乱数生成デバイスにおいて、生成モジュールが、乱数を格納する格納ユニットをN個含む乱数列を生成し、次に、ランダムシャフリングモジュールが、乱数列内の格納ユニットに対してランダムシャフリングを行い、読み出しモジュールが、乱数取得命令を受信し、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すことができる。ランダムシャフリングモジュールが乱数列内の格納ユニットに対してランダムシャフリングを行うので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数生成デバイスは比較的高いランダム性を達成できる。
図7は、本願の実施に係る乱数取得方法を例示するフローチャートである。本願のこの実施において例示される乱数取得方法を、取得の観点から説明する。図7に示すように、乱数取得方法は以下の各ステップを含む。
S710.乱数取得命令を受信し、乱数列を獲得する。ここで、乱数列はN個の格納ユニットを含み、格納ユニットのそれぞれは乱数を格納し、乱数列におけるN個の格納ユニットの位置はランダムシャフリングを通じて特定され、Nは正の整数である。
本願のこの実施において、N個の格納ユニットは異なる乱数を格納する。
本願のこの実施においては、各格納ユニットに格納される乱数が他の格納ユニットに格納される乱数と異なるように、N個の格納ユニットがそれぞれ1からN個の整数を格納してよい。
本願の他の実施において、乱数列の長さは設定可能であり、要求に応じて事前に設定される。
本願のこの実施においては、乱数列が生成された後、各格納ユニットが識別子値を有する。ランダム関数に基づきランダム値が生成され、ランダム値に基づき交換対象格納ユニットの識別子値が生成され、交換対象格納ユニットが特定される。
本願のこの実施においては、識別子値と所定の交換ルールとに基づき、交換対象格納ユニットの乱数と目標格納ユニットの乱数とが交換される。
本願のこの実施における格納ユニットの乱数を交換する方法は、所定の交換ルールの1つのタイプに過ぎないことは注目に値する。即ち、所定の交換ルールは実際の要件に基づき設定されてよく、格納ユニットの乱数に対する交換は、様々な交換方法を用いて行われる。
S720.乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を獲得する。
本願の具体的な実施において、乱数取得命令が受信された後、現在読み出されている格納ユニットの識別子値(即ち、前回読み出された格納ユニットの識別子値)が乱数取得命令に基づき獲得され、現在読み出されている格納ユニットの識別子値に基づき、次の格納ユニットに格納された乱数が読み出される。
本願のこの実施における乱数取得方法は、先ず、乱数取得命令を受信するステップと、次に、乱数列を獲得し、乱数列におけるN個の格納ユニットの位置を、ランダムシャフリングを通じて特定するステップと、受信した乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出すステップとを含む。乱数列内の格納ユニットに対してランダムシャフリングが行われるため、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数取得方法は比較的高いランダム性を達成できる。
本開示の実施は、先に述べた各実施において提供される乱数取得方法に対応する乱数取得デバイスを更に提供する。本開示のこの実施において提供される乱数取得デバイスは先に述べた各実施において提供される乱数取得方法と同一の又は類似の技術的特徴を有する。よって、乱数取得方法の各実施は、この実施において提供される乱数取得デバイスにも適用可能である。この実施において詳細は説明しない。図8に示すように、乱数取得デバイスは、受信モジュール210と、乱数列取得モジュール220と、乱数取得モジュール230とを含んでよい。
受信モジュール210は、乱数取得命令を受信するように構成される。
乱数列取得モジュール220は、乱数列を獲得するように構成され、乱数列はN個の格納ユニットを含み、格納ユニットのそれぞれは乱数を格納し、乱数列におけるN個の格納ユニットの位置はランダムシャフリングを通じて特定され、Nは正の整数である。
本願の実施において、N個の格納ユニットは異なる乱数を格納する。
乱数取得モジュール230は、乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を獲得するように構成される。
本願の実施において、図9は、本願の他の実施に係る乱数取得デバイスを例示する概略構造図である。図8に基づき、図9に示される乱数取得モジュール230は、乱数取得命令に基づき現在読み出されている格納ユニットの識別子値を獲得するように構成された第1の取得サブモジュール2301と、現在読み出されている格納ユニットの識別子値に基づき、次の格納ユニットに格納された乱数を獲得するように構成された第2の取得サブモジュール2302とを含む。
本願のこの実施における乱数取得デバイスにおいて、先ず、受信モジュールが乱数取得命令を受信し、次に、乱数列取得モジュールが乱数列を獲得し、乱数列におけるN個の格納ユニットの位置がランダムシャフリングを通じて特定され、乱数取得モジュールが、受信された乱数取得命令に基づき、乱数列内の対応する格納ユニットから、当該格納ユニットに格納された乱数を読み出す。乱数列内の格納ユニットに対してランダムシャフリングが行われるので、比較的短い単位時間で獲得される複数の乱数は反復率が低く、偏りのない分散が得られる。したがって、本願における乱数取得デバイスは比較的高いランダム性を達成できる。
本願の説明において、「第1」及び「第2」という用語は単に説明のために使用されており、示された技術的特徴の数の相対的重要性又は暗示的表示を示唆又は含意するものとして理解することはできない。したがって、「第1」又は「第2」によって修飾された特性は、明示的又は暗示的に1つ又は複数の特徴を含むことができる。本願の記載において、「複数の」は、特に明記しない限り、少なくとも2つ、例えば2つ又は3つを意味する。
本明細書の記述において、「実施」「いくつかの実施」「例」「特定の例」及び「いくつかの例」などの参照用語は、実施又は例を参照して説明された特定の特徴、構造、材料、又は特性が、本願の1つ又は複数の実施又は例に含まれる、ということを意味する。本明細書では、前述の用語は必ずしも同一の実施又は例について記載されるわけではない。更に、記載された特定の特徴、構造、材料、又は特性は、任意の1つ又は複数の実施又は例において適切な方法で組み合わせることができる。更に、当業者であれば、本明細書に記載された異なる実施又は例の矛盾しない特徴を組み合わせることができる。
フローチャート又は別の方法で記載された任意のプロセス又は方法の説明は、実行可能命令のモジュール、セグメント、又はコードの一部として理解することができ、実行可能命令は特定の論理機能又はプロセスを実施するための1つ又は複数のステップを含み、本願の実施は別の実施をも含み、別の実施において機能は図示又は議論された順序とは異なる順序で実行できる、例えば、関連機能は同時に又は逆の順序で実行される。本願の実施に関連する当業者には理解されるべきである。
本願の一部は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組合せによって実施され得ることを理解されたい。前述の実施では、メモリに格納され、適切な命令実行システム又はファームウェアによって実行されるソフトウェアを使用することによって、複数のステップ又は方法を実施することができる。例えば、当該技術分野における以下の技術のいずれか1つ又は組み合わせを用いて実施可能なハードウェアを用いることによってステップ又は方法を実現するのであれば実施することができる:データ信号の論理機能を実施する論理ゲート回路を含むディスクリート論理回路、適切な組合せ論理ゲート回路、プログラマブルゲートアレイ(PGA)、フィールドプログラマブルゲートアレイ(FPGA)などを有する特定用途向け集積回路。
当業者であれば、方法の実施におけるステップの全部又は一部が、関連するハードウェアを指示するプログラムによって実施できることを理解することができる。このプログラムは、コンピュータ可読記憶媒体に格納することができる。プログラムが実行されると、方法の実施のステップの1つ又は複数の組み合わせが実行される。
更に、本願の実施における機能ユニットは、1つの処理モジュールに統合することができ、又は各ユニットを物理的に単独で存在させることができ、又は2つ以上のユニットを1つのモジュールに統合することができる。統合モジュールは、ハードウェアの形態で実施することができ、又はソフトウェア機能モジュールの形態で実施することができる。統合モジュールがソフトウェア機能モジュールの形態で実施され、独立した製品として販売又は使用される場合、統合モジュールはコンピュータ可読記憶媒体に格納することができる。
前述の記憶媒体は、読み出し専用メモリ、磁気ディスク、光ディスクなどであってもよい。本願の実施を上記に示し説明したが、前述の実施は例示であり、本願に対する限定として解釈することはできない。当業者であれば、本願の範囲内において、前述の実施に対して変更、修正、置換、及び修正を行うことができる。
[第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の局面に記載のデバイス。

Claims (12)

  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のいずれか一項に記載の方法を実行させる、前記デバイスのメモリ内の実行可能な命令を記憶する、乱数生成デバイス。
JP2018549163A 2016-03-17 2017-03-07 乱数生成及び取得の方法及びデバイス Active JP6793747B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201610152995.2A CN107203365B (zh) 2016-03-17 2016-03-17 随机数的生成及获取方法和装置
CN201610152995.2 2016-03-17
PCT/CN2017/075828 WO2017157197A1 (zh) 2016-03-17 2017-03-07 随机数的生成及获取方法和装置

Publications (3)

Publication Number Publication Date
JP2019512805A JP2019512805A (ja) 2019-05-16
JP2019512805A5 JP2019512805A5 (ja) 2020-10-08
JP6793747B2 true JP6793747B2 (ja) 2020-12-02

Family

ID=59850088

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018549163A Active JP6793747B2 (ja) 2016-03-17 2017-03-07 乱数生成及び取得の方法及びデバイス

Country Status (8)

Country Link
US (3) US10691415B2 (ja)
EP (2) EP3432137B1 (ja)
JP (1) JP6793747B2 (ja)
CN (1) CN107203365B (ja)
ES (1) ES2847287T3 (ja)
PL (1) PL3432137T3 (ja)
TW (1) TWI671645B (ja)
WO (1) WO2017157197A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107203365B (zh) 2016-03-17 2020-09-08 阿里巴巴集团控股有限公司 随机数的生成及获取方法和装置
CN110390855A (zh) * 2018-04-16 2019-10-29 王金环 一种基于双重随机算法的课堂提问与计分系统
CN110647287A (zh) * 2018-06-26 2020-01-03 北京兆易创新科技股份有限公司 存储器的数据存储方法、装置、电子设备和存储介质
CN110069242A (zh) * 2019-04-26 2019-07-30 迅付信息科技有限公司 一种随机数发生器及电子券、动态支付码的生成方法
CN110505523B (zh) * 2019-09-24 2020-06-30 广州优视云集科技有限公司 一种视频转码优先级顺序控制方法及处理终端
CN113138751B (zh) * 2020-01-17 2023-06-09 北京新能源汽车股份有限公司 一种随机数的处理方法、装置及汽车
JP7446923B2 (ja) * 2020-06-02 2024-03-11 キオクシア株式会社 半導体装置及び半導体記憶装置
CN111966844B (zh) * 2020-08-17 2023-09-26 北京像素软件科技股份有限公司 一种对象的加载方法、装置及存储介质
CN113157249B (zh) * 2021-04-22 2023-09-08 北京奇艺世纪科技有限公司 标识号生成方法、装置、电子设备及存储介质
CN113485676A (zh) * 2021-07-08 2021-10-08 上海通联金融服务有限公司 随机生成信用卡号的方法及系统
US20230205531A1 (en) * 2021-12-23 2023-06-29 Intel Corporation Random data usage
CN117827148A (zh) * 2023-12-30 2024-04-05 北京海泰方圆科技股份有限公司 一种随机数生成方法、装置及电子设备

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1153173A (ja) 1997-08-07 1999-02-26 Nec Corp 擬似乱数発生方法及び装置
US6760739B2 (en) * 2001-03-01 2004-07-06 Corrent Corporation Pipelined digital randomizer based on permutation and substitution using data sampling with variable frequency and non-coherent clock sources
US7197142B2 (en) * 2001-08-24 2007-03-27 Alten Alexander I System and methods for a vernam stream cipher
FR2829643A1 (fr) * 2001-09-12 2003-03-14 Everbee Wireless Ltd Procede pour generer des nombres aleatoires
US7236996B2 (en) * 2003-12-05 2007-06-26 John McCann Methods for generating random numbers
JP2005228169A (ja) 2004-02-16 2005-08-25 Bittech Inc 乱数生成装置
JP2006155168A (ja) * 2004-11-29 2006-06-15 Hitachi Ltd 乱数生成方法及びシステム
CN101105742A (zh) * 2006-07-10 2008-01-16 致伸科技股份有限公司 随机数产生器及随机数产生方法
US8510359B2 (en) * 2006-10-31 2013-08-13 Kiyoto Yui Pseudo-random number generation device, pseudo-random number generation program, and medium containing pseudo-random number generation program
JP4308293B2 (ja) * 2007-11-20 2009-08-05 際国 董 乱数生成装置及び方法
US20100005133A1 (en) * 2008-07-04 2010-01-07 Samsung Electronics Co. Ltd. Apparatus and method for generating permutation sequence in a broadband wireless communication system
CN102541508A (zh) * 2010-12-29 2012-07-04 鸿富锦精密工业(深圳)有限公司 真随机数产生系统及方法
JP5813380B2 (ja) * 2011-06-03 2015-11-17 株式会社東芝 半導体記憶装置
US8843539B2 (en) * 2012-05-08 2014-09-23 Caringo, Inc. Generation of seed value for pseudo random number generator
CN103034471B (zh) * 2012-12-10 2016-06-01 杜海洋 一种随机数的生成方法及系统
CN103645882A (zh) * 2013-12-09 2014-03-19 中颖电子股份有限公司 基于单片机的批量乱序随机数的生成方法
CN104506319B (zh) * 2014-12-15 2017-11-28 飞天诚信科技股份有限公司 一种多种子动态令牌的工作方法
CN107203365B (zh) 2016-03-17 2020-09-08 阿里巴巴集团控股有限公司 随机数的生成及获取方法和装置
JP7299740B2 (ja) 2019-04-08 2023-06-28 キヤノン株式会社 シート撮像装置、シート判別装置および画像形成装置

Also Published As

Publication number Publication date
ES2847287T3 (es) 2021-08-02
US10929103B2 (en) 2021-02-23
JP2019512805A (ja) 2019-05-16
CN107203365A (zh) 2017-09-26
EP3432137B1 (en) 2020-10-14
PL3432137T3 (pl) 2021-08-02
CN107203365B (zh) 2020-09-08
EP3751410B1 (en) 2022-01-26
EP3751410A1 (en) 2020-12-16
TWI671645B (zh) 2019-09-11
US20190012147A1 (en) 2019-01-10
US20200319854A1 (en) 2020-10-08
WO2017157197A1 (zh) 2017-09-21
US20210216285A1 (en) 2021-07-15
EP3432137A1 (en) 2019-01-23
TW201734836A (zh) 2017-10-01
US11182129B2 (en) 2021-11-23
US10691415B2 (en) 2020-06-23
EP3432137A4 (en) 2019-11-13

Similar Documents

Publication Publication Date Title
JP6793747B2 (ja) 乱数生成及び取得の方法及びデバイス
JP6804668B2 (ja) ブロックデータ検証方法および装置
KR102050006B1 (ko) 서비스 실행 방법 및 장치
JP2019512805A5 (ja)
JP2018509833A (ja) サイドチャネル解析抵抗アーキテクチャ
EP3640813B1 (en) Cluster-based random walk method and apparatus
CN108021610A (zh) 随机游走、基于分布式系统的随机游走方法、装置以及设备
CN106407128B (zh) 用于向持久性存储器多播数据的方法和系统
US10776334B2 (en) Random walking and cluster-based random walking method, apparatus and device
CN116962438A (zh) 一种梯度数据同步方法、系统、电子设备及可读存储介质
JP4962483B2 (ja) 情報処理装置
CN107977310B (zh) 一种遍历测试命令生成方法及装置
US10901971B2 (en) Random walking and cluster-based random walking method, apparatus and device
CN107547378B (zh) 一种vpn路由学习方法和装置
JP2017029827A5 (ja)
JP2014222394A (ja) 半導体記憶装置および乱数発生器
JP2015018558A (ja) 単一サイクルの調停
WO2018120537A1 (zh) 一种队列轮询选择方法及装置、计算机存储介质
US9645793B2 (en) Random permutation generator and method for generating a random permutation sequence
CN115098271B (zh) 一种多线程数据处理方法、装置、设备及介质
KR102649273B1 (ko) 멀티코어 마이크로프로세서 기반 소프트웨어에서 발생하는 경쟁상태를 이용한 난수발생 기술
CN107911756A (zh) 一种视频地址生成方法及装置
CN117075820A (zh) 一种消息缓存器和协处理器
JP2021013667A5 (ja)
JP2008187533A (ja) 帯域制御システム、帯域制御プログラムおよび帯域制御方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200306

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200306

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20200605

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200828

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200828

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200924

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200928

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201022

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20201102

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201110

R150 Certificate of patent or registration of utility model

Ref document number: 6793747

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250