JPH06103035A - 擬似乱数を生成する方法および装置 - Google Patents

擬似乱数を生成する方法および装置

Info

Publication number
JPH06103035A
JPH06103035A JP5207009A JP20700993A JPH06103035A JP H06103035 A JPH06103035 A JP H06103035A JP 5207009 A JP5207009 A JP 5207009A JP 20700993 A JP20700993 A JP 20700993A JP H06103035 A JPH06103035 A JP H06103035A
Authority
JP
Japan
Prior art keywords
value
seed
pseudo
mask
circuit
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.)
Pending
Application number
JP5207009A
Other languages
English (en)
Inventor
Michael G Gallup
マイケル・ジ−・ギャラップ
L Rodney Goke
エル・ロドニ−・ゴ−ク
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.)
Motorola Solutions Inc
Original Assignee
Motorola Inc
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 Motorola Inc filed Critical Motorola Inc
Publication of JPH06103035A publication Critical patent/JPH06103035A/ja
Pending legal-status Critical Current

Links

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/582Pseudo-random number generators
    • G06F7/584Pseudo-random number generators using finite field arithmetic, e.g. using a linear feedback shift register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/58Indexing scheme relating to groups G06F7/58 - G06F7/588
    • G06F2207/581Generating an LFSR sequence, e.g. an m-sequence; sequence may be generated without LFSR, e.g. using Galois Field arithmetic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/58Indexing scheme relating to groups G06F7/58 - G06F7/588
    • G06F2207/583Serial finite field implementation, i.e. serial implementation of finite field arithmetic, generating one new bit or trit per step, e.g. using an LFSR or several independent LFSRs; also includes PRNGs with parallel operation between LFSR and outputs

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

(57)【要約】 【目的】 擬似乱数を生成する方法および装置を提供す
ること。 【構成】 一つの形態では、本発明は、擬似乱数を生成
するのに使用する多項式を決定するプログラム可能で選
択可能なMASK値を用いる。ラン・レート(ran
rate)を増大し、生成中の擬似乱数の列のランダム
度を改善するために、擬似乱数が生成されている間に、
MASK値を変更できる。本発明はまたプログラム可能
で選択可能なSEED値を使用する。初期SEED値は
最初の擬似乱数を生成するのに用いる。ついで最初の擬
似乱数をNEW SEED値として使用して、2番目の
擬似乱数を生成し、以下同様に行う。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は一般に擬似乱数に関し、
具体的には擬似乱数を生成する方法および装置に関す
る。
【0002】
【従来の技術】真の乱数の生成と違い、擬似乱数の生成
は、同じ入力パターンが与えられると常に同じ出力を作
る。しかしながら、真の乱数を必要としない用途や擬似
乱数で充分な用途も数多くある。たとえばデータ処理シ
ステムの試験パターンを生成するのに、擬似乱数を使用
できる。また擬似乱数は、データ処理システムにおいて
ノイズを表すのにも使用できる。また擬似乱数を使用す
れば、計算を開始する擬似ランダム開始点として機能す
る初期状態もしくは初期値を生成できる。一部のニュー
ラル・ネットワーク・システムでは、計算を開始する際
にこの種の擬似ランダム開始点を必要とする。さらに擬
似乱数をデータの暗号化や解読に使用してもよい。擬似
乱数は他にも用途がある。
【0003】既存の擬似乱数生成器は通常、擬似乱数を
生成するのに線形フィードバック・シフトレジスタ(l
inear−feedback shift−regi
ster)(LFSR)を用いる。LFSRは、排他的
論理和ゲート(XOR)を介したフィードバック接続を
有する多段シフトレジスタである。最終段階の出力およ
びある中間段階の出力が結ばれて、これがXORゲート
を介して最初の段階にフィードバックされる。そのレジ
スタが左から右へシフトさせるものであれば、最初の段
階と最後の段階はそれぞれいちばん左、いちばん右のビ
ット位置になっている。既存のLFSRにおいて、擬似
乱数を生成するのに用いる多項式は、LFSRの種々の
段階からのハードワイヤド(hardwired)・フ
ィードバック接続によって決まる。
【0004】
【発明が解決しようとする課題】既存の擬似乱数生成器
は、生成器が作る数の列が結果的に反復されるという特
徴を持っている。したがってこの「列(sequence)」は、
反復が発生する以前に生成された擬似乱数の列をいう。
「ラン・レングス(run length)」は、この列に含まれる
擬似乱数の数をいう。たとえば擬似乱数生成器がつぎの
パターンを生成する場合:2,6,1,2,6,1,
2,6,1;列は2,6,1になる。この列の中に3つ
の数があるので、ラン・レングスは3になる。ラン・レ
ングスが増加すると、列の反復回数が確実に減少し、こ
れによって、パターンの「ランダム度」が改善されるこ
とに注意されたい。
【0005】
【課題を解決するための手段】本発明は、上記の必要性
を満たし、その他の利点も達成する。一つの形態では、
本発明は擬似乱数を生成する装置および方法である。
【0006】一つの実施例では、本発明は、第1二進値
と第2二進値を論理的に結合して、中間二進値を作る論
理演算装置を有する。本発明はまた、追加の論理演算装
置を有する。この装置は前記論理演算装置から中間二進
値を受け取るため、および中間二進値が奇数個の1を含
む場合には第1論理状態を有し、中間二進値が偶数個の
1を含む場合には第2論理状態を有する二進ビットを作
るためのものである。この論理演算装置はこの二進ビッ
トを用いて、擬似乱数のビットを決定する。
【0007】当業者は、添付図面と合わせて以下の詳細
な説明により、本発明を把握しよう。
【0008】
【実施例】本発明ではプログラム可能なMASK値を用
いると、同一回路によって、種々の多項式を用いて擬似
乱数を生成できる。このため、同一ハードワイヤド回路
によって、多くの異なる擬似乱数列を作ることができ
る。また擬似乱数を生成している間にMASK値を変更
できる。複数のMASK値を使用すれば、ラン・レング
スを、一つの列のラン・レングスの限界を越えて増加で
きる。実際、複数のMASK値を用いると、ラン・レン
グスを大幅に増大できる。ラン・レングスが増大する
と、列の反復回数が確実に減少して、パターンの「ラン
ダム度」が改善される。
【0009】図1は、マスク・レジスタ回路12,シー
ド・レジスタ回路(seed resistor circuit)14,シフ
ト回路16,制御論理回路18,論理演算装置回路2
0,ワンズ・タリー回路(ones tally circuit)22,バ
ス24,バス26,バス28を有するデジタル・データ
処理システム10を示したものである。
【0010】マスク・レジスタ12はバス26,バス2
8および制御論理18に結合されている。シード・レジ
スタ14はバス24,バス28および制御論理18に結
合されている。シフト回路16は論理演算装置20,ワ
ンズ・タリー回路22,バス24,制御論理18に結合
されている。論理演算装置20はワンズ・タリー回路2
2,バス26,バス28および制御論理18に結合され
ている。ワンズ・タリー回路22は制御論理18に結合
されている。命令取出し(fetch)回路30は命令デコー
ド回路32に結合されている。命令デコード回路32は
制御論理18に結合されている。命令取出し回路30は
一つの命令を受け取る。注意すべきことは、命令取出し
回路30が受け取ったこの命令は、メモリ(図示せず)
からのものでよく、このメモリはデータ処理システム1
0の一部であるか、またはデータ処理システム10の外
部にあることである。
【0011】ここで本発明の動作を説明する。図1につ
いて言えば、マスク・レジスタ12に格納されている値
を「MASK」という。プロセスの初めにシード・レジ
スタ14に格納されている値を「SEED」という。プ
ロセスの終わりにシード・レジスタ14に格納された値
を「NEW SEED」という。個々のビットもしくは
ビット・フィールドは括弧内に示す。たとえばSEED
[7:1]は、SEED値のビット7からビット1まで
(ビット7、ビット1を含む)を指す。
【0012】ワンズ・タリー回路22が実行した機能は
「ONES−TALLY」という。実質的に、ONES
−TALLY演算は、二進数内の1の数をカウント(ま
たはタリー)する。たとえばONES−TALLY(1
101)は、二進数1101の中に1が3個あるので3
に等しい。ワンズ・タリー回路22の4ビット出力をO
T[3:0]という。ワンズ・タリー回路22の出力の
最下位ビットをOT[0]という。
【0013】擬似乱数は、以下に示す表1の諸段階を用
いて、本発明の1実施例に基づいて生成される。表1の
3つの段階はそれぞれ、図2では流れ図のブロックとし
て示されている。各段階がどのように実行されるか例示
するために、二進数を含めている。旧SEEDおよびN
EW SEEDを含めたSEED値は、擬似乱数列内の
個々の数を表す。
【0014】
【表1】 段階1) AND演算を実行する SEED & MASK =(SEED&
MASK) 11011010&10011011=1001101
0 段階2) ワンズ・タリー演算を実行する ONES−TALLY(SEED&MASK)=OT
[3:0] ONES−TALLY(10011010) =010
0 段階3) SEED値をNEW SEED値と置き換え
る OT[0],SEED[7:1]=NEW SEED 0, 1101101 =NEW SEED 01101101 =NEW SEED 図1を参照して、擬似乱数を生成する上記3つの段階の
それぞれについて詳述する。
【0015】第1段階は単純な論理AND演算であり、
ここでシード・レジスタ14内のSEED値と、マスク
・レジスタ12内のMASK値との論理積を求める。M
ASK値はバス26を介して論理演算装置20に転送さ
れる。SEED値はバス24およびシフト回路16を介
して論理演算装置20に転送される。第1段階では、シ
フト回路16はシフト機能を実行せず、バス24からの
SEED値を論理演算装置20に渡すだけである。図に
示す本発明の実施例のMASK値およびSEED値はそ
れぞれ8ビットであるが、便宜上ビット数Nを使用して
いる。制御論理18の制御下において、論理演算装置2
0は、SEED値とMASK値との論理積を求めて、そ
の結果の8ビット(SEED&MASK)をワンズ・タ
リー回路22に出力する。第1段階はこれで完了する。
【0016】第2段階はワンズ・タリー演算である。ワ
ンズ・タリー演算は、二進数内の1の数をカウント(ま
たはタリー)する。たとえばONES−TALLY(1
0011010)は、二進数10011010内に4個
の1があるので4に等しい。ワンズ・タリー回路22の
4ビット出力をOT[3:0]という。ワンズ・タリー
回路22の出力の最下位ビットをOT[0]という。図
に示す本発明の実施例では、ワンズ・タリー回路22の
出力の最下位ビットのみを使用する。この実施例ではワ
ンズ・タリー回路22が出力するビット1,2,3は使
用しない。ワンズ・タリー回路22は当業者には周知の
ものであり、加算セルの使用もしくはXORゲートの使
用など、利用可能な任意の方法で実行してもよい。これ
で第2段階が完了する。
【0017】第3段階は、NEW SEED値の生成、
および旧SEED値とNEW SEED値との置き換え
によって構成される。第1段階と同様、SEED値は、
バス24およびシフト回路16を介して論理演算装置2
0に転送される。しかしながら第1段階と違い、シフト
回路16がバス24からのSEED値を論理演算装置2
0に渡すに伴い、シフト回路16はシフト機能を実行す
る。シフト回路16は、SEED値の各ビットを1ビッ
ト右にシフトさせ、旧SEED[7]をNEWSEED
[6]に、旧SEED[6]をNEW SEED[5]
に、旧SEED[5]をNEW SEED[4]に、旧
SEED[4]をNEW SEED[3]に、旧SEE
D[3]をNEW SEED[2]に、旧SEED
[2]をNEW SEED[1]に、旧SEED[1]
をNEW SEED[0]に実際上シフトさせる。
【0018】旧SEEDの最下位ビットであるSEED
[0]は、NEW SEED値の生成には必要でなく、
廃棄できることに注意されたい。ワンズ・タリー回路2
2の出力から来る最下位ビットは、NEW SEED値
の最上位ビットとしてシフトされる。このためNEW
SEED値は、旧SEED値を1ビット右にシフトさ
せ、またNEW SEED値の最上位ビットとしてOT
[0]を挿入することによって生成される。
【0019】本発明の代替的実施例では、前記に代わ
り、旧SEED値を1ビット左にシフトさせ、NEW
SEED値の最下位ビットとしてOT[0]を挿入する
ことによっても、NEW SEED値の生成が可能であ
ることに注意されたい。またこの左シフト機能は加算器
によって実行できることに注意されたい。たとえばキャ
リーイン(carry−in)入力としてOT[0]を
使用する間、加算器は旧SEED値を旧SEED値に加
算できる。シフト回路16および論理演算装置20を結
合すると、演算論理装置(ALU)を形成できる。
【0020】第3段階では、論理演算装置20は論理演
算を実行せず、シフト回路16からのNEW SEED
値をバス28に渡すだけである。ついでNEW SEE
D値がシード・レジスタ14に書き込まれる。図に示す
本発明の実施例では、NEWSEED値はシード・レジ
スタ14内の旧SEED値に上書きされる。これで第3
段階が完了する。
【0021】論理演算装置20は、多岐に渡る方法でN
EW SEED値を効果的に渡せることに注意された
い。本発明の一部の実施例では、論理演算装置20は論
理AND演算以外の論理演算を実行できる。本発明の他
の実施例では、論理演算装置20は演算論理装置(AL
U)でもよく、これは論理演算と算術演算の両方を実行
できる。
【0022】論理演算装置20は演算を実行せずに実際
にはNEW SEED値を渡すだけでよいが、その代わ
り論理演算もしくは算術演算を実行してもよく、これ
は、出力されるNEW SEED値を変更しない。たと
えば論理演算装置20はNEWSEED値とオール1と
の論理積をとることができる。論理演算装置20はNE
W SEED値とオール0との論理和をとることができ
る。論理演算装置20は、第2オペランドとしてオール
0を用いて、加算演算もしくは減算演算を実行できる。
【0023】旧SEED値は、擬似乱数列内の一つの数
である。NEW SEED値は表1に示す3つの手順に
よって生成され、これが擬似乱数列内のその次の数にな
る。ついでNEW SEED値が旧SEED値になり、
これを用いて擬似乱数列内のその次の数を生成する。こ
のためそれぞれSEED値を用いて、擬似乱数列内の後
続の数を生成する。最新の擬似乱数であるNEW SE
ED値は、データ処理システム10の他の部分に伝送し
てもよいし、またはバス24、およびバス24に結合す
ることが予想される追加バス(図示せず)によってデー
タ処理システム10の外部に伝送してもよいことに注意
されたい。
【0024】図1を参照して注意すべきことは、次の擬
似乱数を生成するには、図に示す本発明の実施例で、シ
フト回路16および論理演算装置20を通るパスが2つ
必要なことである。第1のパスは、論理演算装置20を
使用するが、シフト回路16は使用しない。第2のパス
は、シフト回路16を用いるが、論理演算装置20は使
用しない。ワンズ・タリー回路22はシフト回路16お
よび論理演算装置20を通るパス間でのみ使用できる。
マスク・レジスタ12内に格納されたMASK値は、シ
フト回路16および論理演算装置20を通る第1のパス
においてのみ使用される。
【0025】ユーザはバス28を使用して、所望のSE
ED値をシード・レジスタ14にロードできる。ユーザ
がいったんシード・レジスタ14に初期SEED値をプ
ログラムすれば、シード・レジスタ14に格納されたS
EED値は、上述した表1の擬似乱数生成手順によって
連続的に更新される。ユーザは、バス28に新しい値を
ロードすることによって、シード・レジスタ14内のS
EED値を変更してもよいが、これは必ずしも必要なこ
とではない。
【0026】またユーザはバス28を使用して所望のM
ASK値をマスク・レジスタ12にロードできる。ユー
ザがいったん初期MASK値をマスク・レジスタ12に
プログラムすれば、マスク・レジスタ12に格納された
MASK値は、上述した表1の擬似乱数生成手順によっ
て変更もしくは影響されない。ユーザは、バス28に新
しい値をロードすることによって、マスク・レジスタ1
2内のMASK値を変更してもよいが、これは必ずしも
必要なことではない。
【0027】MASK値はプログラムの制御下におい
て、どの多項式を擬似乱数の生成に使用するか選択する
のに用いる。MASK値は、多項式に含めるべきでない
ゼロでないシード係数のすべてをゼロにするのに用い
る。二進数のゼロ値を有するマスクの各ビット位置につ
いては、対応する多項式の係数は使用されない。また二
進数の1の値を有するマスクの各ビット位置について
は、対応する多項式の係数が使用される。
【0028】したがって、一つの多項式にしか固定接続
できない従来の線形フィードバック・シフトレジスタ
(LFSR)と違い、本発明ではユーザは、プログラム
の制御下において、とり得る多項式のいずれも選択でき
る。このためユーザは、一つだけの擬似乱数列ではな
く、多数の擬似乱数列を生成できる。
【0029】プログラムの制御下においてマスクの初期
値を選択するほかに、ユーザは、擬似乱数の列が生成さ
れている間でも、マスク・レジスタ12内のMASK値
を変更できる。MASK値の変更は、擬似乱数の生成に
使用されている多項式を変更する効果を有する。多項式
の変更は、擬似乱数の列を変更する効果を有する。また
反復が発生する前に擬似乱数列を変更することは、この
列を拡張する効果を持ち得る。
【0030】このため、列全体が反復される前にMAS
K値を変更し続けることによって、列全体のラン・レン
グスを大きく拡張できる。これは、列全体をほとんど反
復されないよう確保することによって、列全体のランダ
ム度を劇的に改善する。これが本発明の大きな利点であ
る。
【0031】従来の線形フィードバック・シフトレジス
タ(LFSR)のラン・レングスは、擬似乱数が2N
−1個より大きくなく、ここでNはLFSRの段数を表
す。単一のMASK値を使用した本発明のラン・レング
スでも、2N −1個と同じくらいの擬似乱数を取り得
る。ここでNはSEED値内のビット数を表す。しかし
ながら擬似乱数の生成中にMASK値を変更すれば、本
発明のラン・レングスは従来のLFSRの2N −1個
を越えて大きく増大できる。MASK値を最大限変化さ
せるという考えを持てば、ユーザは一つの擬似乱数が生
成されるたびにMASK値を変更することによって、異
なる多項式を選択できる。
【0032】前記表1で説明した3つの段階が合わさっ
て一つの命令を形成でき、この命令はデータ処理システ
ム10によって実行できる。そのため新しい擬似乱数が
一つ生成されるたびに、この一つの命令が実行される。
したがって「M」個の擬似乱数を生成するためには、こ
の一つの命令がM回実行される。この一つの命令はソフ
トウェア・ループの一部として使用でき、このループに
よって、命令は選択した回数実行できる。
【0033】また、3つの段階のそれぞれ、または3つ
の段階の一部を一つもしくは複数の命令に分割してもよ
く、これらの命令を一緒に使用して、表1で説明した3
つの段階を実行してもよい。
【0034】また、一つの命令は、ビット・フィールド
の形でパラメータを含めてもよく、このパラメータは、
表1の3つの段階が何回反復されるかを指定し、これに
よって命令の1回の実行に対してどれだけの数の擬似乱
数が生成されるかを指定する。そのため一つの命令を使
用して、複数の擬似乱数を生成できる。
【0035】注意すべきことは、SEED値およびMA
SK値は、表1で説明した3つの段階を実行する命令の
引数として使用できることである。命令自体はSEED
値およびMASK値をそれぞれ一つのフィールドとして
含んでもよい。SEED値およびMASK値が命令の一
部である場合には、マスク・レジスタ12およびシード
・レジスタ14は命令フィールドの一時記憶装置として
機能できる。
【0036】また、データ・レジスタ0およびデータ・
レジスタ1など2つのレジスタ位置を、表1で説明した
3つの段階を実行する命令の引数として使用してもよ
い。この場合、指定される2つのレジスタは、所望のS
EED値およびMASK値を予めロードしていなければ
ならない。また、表1の3つの段階を実行する命令は引
数を必要としないかもしれず、単に、第1の所定の記憶
位置に格納された既存の値をSEED値として使用し、
また第2の所定の記憶位置に格納された既存の値をMA
SK値として使用してもよい。
【0037】ここで好適実施例を検討する。好適実施例
では、「RAND」命令を使用して、表1の3つの段階
を実行することによって、乱数を生成する。RAND命
令は2つの引数を含む。第1の引数は、SEED値を含
んでいるレジスタの位置を決定するのに用いるソース・
レジスタ識別子である。第2の引数は、MASK値を含
んでいるレジスタの位置を決定するのに用いるソース・
レジスタ識別子である。好適実施例において、マスク・
レジスタ12およびシード・レジスタ14はそれぞれ、
複数の汎用データ・レジスタの一つである。好適実施例
では、NEWSEED値を使用して、指定したシード・
レジスタ14内のSEED値を上書きする。
【0038】好適実施例では、シフト回路16および論
理演算装置20が実行する機能性(functiona
lity )は、演算論理装置(ALU)(図示せず)
に結合され、この装置は入力において多重機能を有し、
シフト演算を実行できる。ワンズ・タリー回路22は5
つの全加算器回路を使用して実行される。
【0039】RAND命令は、命令取出し回路30によ
って、内部メモリもしくは外部メモリ(図示せず)から
取り出される。命令デコード回路32はRAND命令を
デコードして、適正な制御情報を制御論理18に伝送す
る。ついで制御論理18は、RAND命令を実行するた
めに、適正な制御信号を伝送する。好適実施例では、右
シフトが実行され、またOT[0]ビットは、NEW
SEED値の最上位ビットの論理状態を決定するのに使
用される。
【0040】要約すると、上記仕様により、擬似乱数を
生成する方法および装置が説明される。本発明により、
ユーザはプログラムの制御下において、擬似乱数の生成
に用いる多項式を決定するMASK値を選択できる。ラ
ン・レングスを増大して、生成中の擬似乱数列のランダ
ム度を改善するために、実際にユーザは、擬似乱数が生
成されている間にMASK値を変更できる。
【0041】また本発明により、ユーザはプログラムの
制御下において初期SEED値を選択できる。この初期
SEED値は、最初の擬似乱数を生成するのに用いる。
ついで最初の擬似乱数をNEW SEED値として使用
し、2番目の擬似乱数を生成し、以下同様に続く。擬似
乱数の生成手順では、ユーザはMASK値もしくはSE
ED値を変更する必要はないが、ユーザは擬似乱数が生
成されている間にMASK値、SEED値の一方もしく
は両方を自由に変更できる。
【0042】図1に示す本発明の一実施例では、シフト
回路16,論理演算装置20,ワンズ・タリー回路2
2,バス24,26,28および制御論理18の一部
が、本発明とは無関係の他の機能のために、データ処理
システム10によって既に使用されている。マスク・レ
ジスタ12およびシード・レジスタ14は既に汎用デー
タ・レジスタとして存在している。このため制御論理1
8の一部、およびワンズ・タリー回路22からシフト回
路16に至るフィードバック経路を追加することによっ
て、データ処理システム10は擬似乱数を生成するとい
う付加的機能を実行できるようになった。
【0043】具体的な実施例を参照して本発明を説明し
てきたが、当業者はこの他にも変更および改良が考えら
れよう。たとえば図1に示す回路12,14,16,1
8,20,22を実行するには、各種の回路を使用でき
る。バス24,26,28は一つの双方向バスに結合す
るか、またはより多くの個々のバスに細分できる。他の
回路および論理(図示せず)を、データ処理システム1
0に含めて、各種のバスに結合してもよい。
【0044】ワンズ・タリー回路22のビット1〜3は
必ずしも必要ないので、本発明の代替的実施例ではこれ
らのビットを生成しない場合がある。たとえば、2入力
XORゲート(図示せず)のネットワークは、少ない回
路を使用し、OT[3:1]を出力せずに、OT[0]
を製造するのに使用できる。OT[0]は二進数内の1
の総数が奇数が偶数かを表す。注意すべきことは、OT
[0]の生成においてワンズ・タリー回路22が実行す
る機能は、パリティ機能と等しいことである。このため
ワンズ・タリー回路22は、パリティ回路と置き換える
ことができる。二進数内の1の総数が奇数の場合には、
OT[0]は1になる。二進数内の1の総数が偶数の場
合には、OT[0]はゼロになる。
【0045】注意すべきことは、OT[0]の補数値で
ある反転OT[0]をOT[0]の代わりに使用して、
NEW SEED値を生成してもよいことである。OT
[0]の代わりに反転OT[0]を使用すると、異なる
SEED値が作られるが、作られたNEW SEED値
は依然擬似乱数になる。
【0046】また注意すべきことは、(SEED&MA
SK)の補数値である反転(SEED&MASK)を
(SEED&MASK)の代わりに使用して、NEW
SEED値を生成してもよいことである。反転(SEE
D&MASK)は、反転SEEDと反転MASKとの論
理和をとることに等しいブール論理である。このためS
EEDとMASKをオペランドとして用いて論理AND
演算を実行する段階は、反転SEEDおよび反転MAS
Kをオペランドとして用いて論理OR演算を実行する段
階と置き換えてもよい。このため論理演算装置20は、
論理AND演算ではなく論理OR演算を実行してもよ
い。しかしながらいずれの場合でも、論理演算装置20
は、SEED値とMASK値の真値もしくは補数値の論
理的結合を実行する。
【0047】(SEED&MASK)および(反転SE
EDOR反転MASK)のほかに、(反転SEED&M
ASK),(SEED&反転MASK),(反転SEE
D&反転MASK),(SEED OR MASK),
(反転SEED OR MASK),または(SEED
OR反転MASK)など、論理関数と、補数値もしく
は非補数値の他の組み合わせを使用してもよい。
【0048】図1に示す本発明の一つの実施例は、ワン
ズ・タリー回路22を実行するのに5つの全加算器段階
を用いる。なぜなら、データ処理システム10のこれに
関連のない機能(図示せず)のために、ワンズ・タリー
回路22の4ビット出力全体が必要だからである。本発
明の一実施例のワンズ・タリー回路22は、XORゲー
ト(図示せず)およびNANDゲート(図示せず)を用
いて実行される。
【0049】本発明の代替的実施例では、ワンズ・タリ
ー回路22は、ONES−TALLY機能をもたらす任
意のゲートの組み合わせを用いて実行できる。「N」を
ワンズ・タリー回路22に入力されるビットの数とし、
またNを2の累乗であると想定すると、図1に示すワン
ズ・タリー回路22は、結果内に[log2(N)]+
1個のビットを生成する。N=8ビットを用いたSEE
D値の場合、ワンズ・タリー回路22によって出力され
たビット数は、[log2(8)]+1ビット,すなわ
ち3+1ビット,すなわち4ビットである。
【0050】図1に示す本発明の実施例は、8ビットM
ASK値を使用するが、このMASK値は任意のビット
数でもよい。同様に、図1に示す本発明の実施例は8ビ
ットSEED値を使用するが、SEED値は任意のビッ
ト数でもよい。注意すべきことは、MASK値のビット
数は、SEED値のビット数より多くても、少なくて
も、同数でもよいことである。しかしながらSEED値
よりもMASK値の方がビット数が多い場合には、多い
分のMASK値のビットは影響を持たなくなる。またS
EED値よりもMASK値の方が少ない場合には、MA
SK値ビットが少ない分だけ、非ゼロのSEED係数を
ゼロにできなくなる。よって、本発明は図に示した具体
的な形式に限定されないことを理解されたい。
【図面の簡単な説明】
【図1】本発明の実施例に基づき擬似乱数を生成する装
置をブロック図で示す。
【図2】本発明の実施例に基づき擬似乱数を生成する方
法を流れ図で示す。
【符号の説明】
10 デジタル・データ処理システム 12 マスク・レジスタ 14 シード・レジスタ 16 シフト回路 18 制御論理 20 論理演算装置 22 ワンズ・タリー回路 24,26,28 バス 30 命令取出し回路 32 命令デコード回路

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 擬似乱数を生成する装置であって、前記
    装置は:第1二進値と第2二進値を論理的に結合して中
    間二進値を作る回路手段(20);および前記回路手段
    (20)から前記中間二進値を受け取るため、および前
    記中間二進値が奇数個の1を含む場合には第1論理状
    態、前記中間二進値が偶数個の1を含む場合には第2論
    理状態を有する二進ビットを作るための論理手段(1
    6,22)であって、前記論理手段(16,22)は、
    前記二進ビットを用いて擬似乱数の一つのビットを決定
    する論理手段(16,22);によって構成されること
    を特徴とする擬似乱数を生成する装置。
  2. 【請求項2】 データ処理システム(10)において擬
    似乱数値を生成する方法であって、前記データ処理シス
    テム(10)は複数のレジスタ(12,14)を有し、
    制御信号を作る回路(22)に結合された論理結合機能
    (20)を実行する回路を有するデータ処理システム
    (10)において擬似乱数値を生成する方法であって、
    前記方法は:第1値と第2値とを論理的に結合して、中
    間値を作る段階;前記中間値の二進数表記における1の
    数が奇数の場合には、前記制御信号を第1論理状態に置
    く段階;および前記第1値および前記制御信号を基にし
    て擬似乱数を生成する段階;によって構成されることを
    特徴とする、データ処理システム(10)において擬似
    乱数値を生成する方法。
  3. 【請求項3】 デジタル・データ・プロセッサ(10)
    を動作させる方法であって、前記方法は:第1命令をデ
    コードする段階;および前記第1命令の前記デコードに
    応答して、 1)第1記憶回路(12)から第1値を検索する段階; 2)第2記憶回路(14)から第2値を検索する段階; 3)前記第1値と前記第2値とを論理的に結合して、中
    間値を作る段階; 4)前記中間値の二進表記における1の数が奇数の場合
    に、二進ビットを第1論理状態に置く段階;および 5)前記第1値および前記二進ビットに基づき擬似乱数
    を生成する段階;を実行する段階;によって構成される
    ことを特徴とするデジタル・データ・プロセッサ(1
    0)を動作させる方法。
JP5207009A 1992-08-05 1993-07-30 擬似乱数を生成する方法および装置 Pending JPH06103035A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US92498492A 1992-08-05 1992-08-05
US924984 1997-09-08

Publications (1)

Publication Number Publication Date
JPH06103035A true JPH06103035A (ja) 1994-04-15

Family

ID=25451032

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5207009A Pending JPH06103035A (ja) 1992-08-05 1993-07-30 擬似乱数を生成する方法および装置

Country Status (3)

Country Link
EP (1) EP0582083A1 (ja)
JP (1) JPH06103035A (ja)
KR (1) KR100274489B1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5910956A (en) * 1996-11-05 1999-06-08 Northrop Gruman Corporation Random time interval generator
JP2003122560A (ja) * 2001-10-17 2003-04-25 Oki Electric Ind Co Ltd 乱数発生システム及び乱数発生方法
US9201629B2 (en) 2013-03-14 2015-12-01 International Business Machines Corporation Instruction for performing a pseudorandom number seed operation
US8873750B2 (en) 2013-03-14 2014-10-28 International Business Machines Corporation Instruction for performing a pseudorandom number generate operation
US10761809B1 (en) * 2020-03-12 2020-09-01 Katholieke Universiteit Leuven Random number generator
CN116132084A (zh) * 2022-09-20 2023-05-16 马上消费金融股份有限公司 视频流处理方法、装置及电子设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62195572A (ja) * 1986-02-21 1987-08-28 Mitsubishi Electric Corp 半導体テスト装置
JPH03214809A (ja) * 1990-01-19 1991-09-20 Nec Corp リニアフィードバック・シフトレジスタ

Also Published As

Publication number Publication date
KR100274489B1 (ko) 2000-12-15
EP0582083A1 (en) 1994-02-09
KR940004464A (ko) 1994-03-15

Similar Documents

Publication Publication Date Title
US5258936A (en) Method and apparatus for generating pseudo-random numbers
US5764554A (en) Method for the implementation of modular reduction according to the Montgomery method
US5416783A (en) Method and apparatus for generating pseudorandom numbers or for performing data compression in a data processor
EP1723543B1 (en) Method and apparatus for management of control flow in a simd device
US20050149590A1 (en) Method and system for performing permutations with bit permutation instructions
US6587864B2 (en) Galois field linear transformer
KR20080015836A (ko) 구성가능한 프로세싱을 위한 장치 및 방법
GB2551849B (en) AES hardware implementation
JPH02242425A (ja) プログラム可能論理ユニット及び信号プロセッサ
JPH0431411B2 (ja)
US7827226B2 (en) Hybrid arithmetic logic unit
JPS59125437A (ja) ハツシユ回路
EP3329363B1 (en) Vector arithmethic instruction
CN112650471A (zh) 用于处理掩蔽数据的处理器和方法
JP5133491B2 (ja) 単一命令多数データ処理
JPH06103035A (ja) 擬似乱数を生成する方法および装置
JPS642986B2 (ja)
US5764550A (en) Arithmetic logic unit with improved critical path performance
JPH1185507A (ja) 中央処理装置およびマイクロコンピュータシステム
JP3723115B2 (ja) 単一命令多重データ処理
US20050154773A1 (en) Data processing apparatus and method for performing data processing operations on floating point data elements
JP2003241960A (ja) プロセッサ、該プロセッサにおける演算命令処理方法及び演算制御方法
EP0936537B1 (en) Cyclic redundancy check in a computer system
CN113485751A (zh) 执行伽罗瓦域乘法的方法、运算单元和电子装置
US5301345A (en) Data processing system for performing a shifting operation and a constant generation operation and method therefor