説明

遊技機用乱数抽出方法及び遊技機用乱数抽出装置

【課題】 自然乱数を利用しつつ、得られる乱数が一様性及び唯一性を備えていることが明らかに認めることができる方法及び装置を提供する。
【解決手段】 本発明に係る方法及び装置は、p種類(pは1より大きい自然数)の値をランダムに生成する乱数生成部から得られる乱数値に対して所定の処理を行って、m種類(m<p)の値を重複なくランダムな順番で抽出することを特徴とする。疑似乱数よりもランダム性が高く再現性のない自然乱数を用いることにより、これを遊技機に適用することによって、遊技機の外部から不正操作を困難にし、遊技機の安全性を高めることができる。また、自然乱数よりも少ない所定数までの値を、所定周期内において重複なくランダムな順番で抽出するようにしたことによって、抽出した乱数が一様性及び唯一性を備えていることは明らかとなり、その旨の認定が容易となる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、パチンコやパチスロ等の遊技機で利用される乱数を抽出するための遊技機用乱数抽出方法及び遊技機用乱数抽出装置に関する。
【背景技術】
【0002】
多くの遊技機やゲーム機において、そのゲームの重要な局面において当たり抽選という動作が行われるが、その際には「乱数」が利用されている。
【0003】
乱数の発生には、種々の手法が知られている。パチンコやパチスロといった、遊技ホールに設置される遊技機は、風営法による規制の対象となっており、その動作や性能などについて細かい規制が課せられている。特に、当たり抽選の結果が景品の多寡に大きく影響する遊技機には、公正を担保するために、使用する乱数発生装置について一定以上の性能(真正な乱数を発生する性能)を備えているかどうかについての審査を受けることが要求されている。
【0004】
しかしながら、使おうとする乱数発生装置が、本当の意味での乱数を発生するものであるかどうかを判断することは、それを使う側にとってもそれを審査する側にとっても難しい問題である。
【0005】
従来の遊技機で使用されている代表的な乱数の発生方式に、例えば0から255までカウントできるカウンタの値を一定周期でインクリメントしてゆく方法や、計算式によりソフトウェア的に乱数を発生させる方法があるが、これらの方法で発生される乱数はいずれも疑似乱数である。
【0006】
遊技機において疑似乱数を使用する利点として、一定周期(例えばカウンタが1巡するのに要する期間)の中で同一の数値が2回以上出現しないようにすることができることから、1周期内に出現する数値に一様性、唯一性を持たせることができるという点が挙げられる。
【0007】
しかしながら、カウンタを用いる方法では、カウンタのカウント値が1周して元に戻るまでの周期が不正を行う者に知られてしまうと、特定のタイミングで自動的にスイッチが入るような回路を遊技機の内部に組み込んだいわゆる「ぶら下がり」や、特定のタイミングで遊技者がスイッチを押すことができる体感器と呼ばれる装置を用いる不正行為等により、大当たりを不正に引き当てることが可能になってしまう。
【0008】
また、計算式によりソフトウェア的に乱数を生成させる方法も知られていて、これは前述のぶら下がりや体感器等の一定のタイミングで大当たりを不正に取得するものには有効であるといえる。しかし、人工的に生成した疑似乱数は再現性があるため、乱数の解析自体を行うことが不可能というものではなかった。
【0009】
このような問題に対処するために、自然界のランダム現象に基づいて得られる乱数(自然乱数)を利用しようとする試みがある。例えば、特開2000−237437号公報、国際出願番号PCT/JP03/02992などに、このような自然乱数発生装置や自然乱数発生方法が開示されている。
【0010】
【特許文献1】特開2000−237437号公報
【特許文献2】国際出願番号PCT/JP03/02992
【特許文献3】特開2000−42227号公報
【特許文献4】特開2003−210734号公報
【発明の開示】
【発明が解決しようとする課題】
【0011】
自然乱数には再現性がないことから、これを利用した遊技機に外部から不正操作を行うことはきわめて難しく、したがって、その結果が景品の多寡に大きく影響する遊技機の抽選手段に利用することは、公平性を担保する上でも、不正を未然に予防する上でも望ましい。しかしながら、自然乱数をそのまま使おうとすると、それが一様性及び唯一性を備えているかどうかを審査することは、やはり難しい。
【0012】
本発明は、このような技術的背景のもとでなされたものであり、その目的は、自然乱数を利用しつつ、得られる乱数が一様性及び唯一性を備えていることを明らかに認めることのできる遊技機用乱数抽出方法及び遊技機用乱数抽出装置を提供することである。
【課題を解決するための手段】
【0013】
上記の課題を解決するための手段として、本発明は、p種類(pは1より大きい自然数)の値をランダムに生成する乱数生成部から得られる乱数値に対して所定の処理を行って、m種類(m<p)の値を重複なくランダムな順番で抽出することを特徴とする。
【0014】
上記本発明の一つの実施形態としての遊技機用乱数抽出方法は、
p種類の値をランダムに生成する乱数生成部から得られる乱数値に基づいて、m種類(m<p)の値をランダムに抽出する遊技機用乱数抽出方法であって、
各セルに0からm−1までの値をインデックス数としてラベル付けしたテーブルに、m個の異なる値を格納する第1ステップと、
前記乱数生成部から得られた乱数値n1を被演算数、y=mを演算数として剰余演算
x=n1 mod y
を行って演算結果xを求める第2ステップと、
前記テーブルのインデックス数がxのセルから抽出値を取り出す第3ステップと、
前記テーブルのインデックス数がxのセルから取り出した値を削除するとともに、インデックス数がx+1以降の各セルに格納されている値を、削除により空いたセルに1ずつ移動させてインデックスの最大値を一つ減らす第4ステップと、
前記yの値を1だけデクリメントする第5ステップと、
前記第2ステップから第5ステップまでの処理をm−1回繰り返し、最後にインデックス数0のセルから抽出値を取り出すことにより、合計m個の抽出値を取り出す第6ステップと、
を含むものとすることができる。
【0015】
本発明に係る遊技機用抽出装置は、
p種類の値をランダムに生成する乱数生成部と、
各セルに0からm−1までの値をインデックス数としてラベル付けされ、各セルにm個の異なる値を格納するテーブルと、
前記乱数生成部から得られた乱数値n1を被演算数、y=mを演算数として剰余演算
x=n1 mod y
を行って演算結果xを求める演算手段と、
前記テーブルのインデックス数がxのセルから抽出値を取り出す第1ステップと、前記テーブルのインデックス数がxのセルから取り出した値を削除するとともに、インデックス数がx+1以降の各セルに格納されている値を、削除により空いたセルに1ずつ移動させてインデックスの最大値を一つ減らす第2ステップと、前記yの値を1だけデクリメントする第3ステップと、を実行するデータ処理部とを備え、
前記データ処理部は、前記第1ステップから第3ステップまでの処理をm−1回繰り返し、最後にインデックス数0のセルから抽出値を取り出すことにより、合計m個の抽出値を取り出すことを特徴とする。
【0016】
なお、前記乱数生成部は、自然乱数生成装置とすることが望ましい。
【発明の効果】
【0017】
本発明によれば、疑似乱数よりもランダム性が高く再現性のない自然乱数を用い、これを遊技機に適用することによって、遊技機外部からの不正操作を困難にし、遊技機の安全性を高めることができる。
【0018】
また、自然乱数よりも少ない所定数までの値を、所定周期内において重複なくランダムな順番で抽出するようにしたことによって、抽出した乱数が一様性及び唯一性を備えていることは明らかとなり、その旨の認定が容易となる。
【発明を実施するための最良の形態】
【0019】
以下で、図面を参照して本発明の実施の一形態について説明する。
本実施形態は、前述のように、熱雑音等を利用して自然乱数を生成する自然乱数生成手段の出力乱数値を用いることが前提となる。
【実施例1】
【0020】
図1は、本発明の実施例1の基本的な考え方を示した図である。ここでは、遊技機において実際に使う最終的な乱数値は、1から10(=乱数最大値)までの10種類とする。一方、ここで利用する自然乱数生成手段は、乱数値nとして、1から256までの256種類の値を出力するものとする。図1において、(a)〜(d)は、1回目の乱数取り出し操作を示し、(e)〜(h)は、2回目の乱数取り出し操作を示す。3回目以降の乱数取り出し操作は省略してある。
【0021】
図1(a)は、当初の乱数取り出しテーブルTの状態を示している。このように、当初の乱数取り出しテーブルTには、1から10までの各数値が、左側に示した0から9までのインデックス数の各セルに規則的に格納されている。この下に示した残乱数値mは変数であり、最初は乱数最大値である10がセットされ、1回の乱数取り出し操作ごとに1ずつデクリメントされる。
【0022】
この状態で、図1(b)に示すように、自然乱数生成手段から乱数値nとして「256」という値が得られたとする。この値と残乱数値m(最初は10)との間で剰余演算、すなわち前者を後者で割ってその余りを求める演算を行い、得られる値をxとする。すなわち、
x=256 mod 10
=6
【0023】
ここで、図1(a)の乱数取り出しテーブルTを参照し、得られたx=6をインデックスとして、そのインデックスのセルに格納されている値「7」を最初の乱数値Rとして取り出す(図1(c))。この乱数値Rが、遊技機において利用される最初の乱数値となる。次に、図1(d)に示すように、乱数取り出しテーブルTから、x=6に対応する値「7」を削除し、それ以降の値を一つずつ上に詰めるとともに、残乱数値mを1つ減らして「9」とする。
【0024】
2回目の乱数取り出し操作では、図1(e)に示すように、図1(d)で得られた乱数取り出しテーブルTを利用する。この状態で、自然乱数生成手段から乱数値nとして「138」が得られたとする(図1(f))。この値と残乱数値m=9との間で剰余演算を行い、得られる値をxとする。すなわち、
x=138 mod 9
=3
【0025】
ここで図1(e)の乱数取り出しテーブルTを参照し、得られたx=3をインデックスとしてそこに格納されている値「4」を乱数値Rとして取り出す(図1(g))。この乱数値Rが、遊技機において利用される2つ目の乱数値となる。次に、図1(h)に示すように、乱数取り出しテーブルTから、x=3に対応する値「4」を削除し、それ以降の値を一つずつ上に詰めるとともに、残乱数値mを1つ減らして「8」とする。
【0026】
以下、同様の操作を、残乱数値mが1になるまで繰り返す。その結果、1から10までのすべての値がランダムな順番で得られることになる。すなわち、残乱数値が10から1になるまでを1周期とすると、1周期の間に、1から10までの値が必ず1回は出現し、しかも各値が出現する順番は確実にランダムとなる。
【0027】
図2は、図1に示した方法で乱数値を取り出す処理を示したフローチャートである。同図において、S101〜S103は、「乱数初期化1」、すなわち最初に乱数取り出しテーブルTを図1(a)に示すようにセットするとともに、残乱数値mに最初に値「10」をセットする処理を示している。この状態で、まず、自然乱数生成手段から乱数値nを取り出し(S111)、nをmで割ってその余りxを求める演算(剰余演算)を行い(S112)、乱数取り出しテーブルTからxをインデックスとして乱数値Rを求める(S113)。次に、乱数取り出しテーブルTからx番目の行を削除し、x+1番目以降を一つずつ前に移動させるとともに(S114)、残乱数値mの値を1だけデクリメントする(S115)。
【0028】
そして、残乱数値mがゼロかどうかを判定し(S116)、ゼロでなければ、S111からS116までのステップを繰り返す。一方、残乱数値mがゼロであれば、再びS101からS103までのステップにより乱数初期化1の処理を行う。
【実施例2】
【0029】
図3は、本発明の実施例2の基本的な考え方を示した図である。まず、(a)に示すように、実施例1と同様の乱数取り出しテーブルTを用意する。この場合、実施例1の場合と同様に、残乱数値mに「10」をセットするとともに、格納ポインタiに「0」をセットする。
【0030】
自然乱数生成手段から乱数値nとして、図1(b)と同様に「256」という値か得られたとする。この値と残乱数値m(最初は10)との間で剰余演算を行い、得られる値をxとする。すなわち、
x=256 mod 10
=6
【0031】
ここで、図3(a)の乱数取り出しテーブルTを参照し、x=6をインデックスとしてそこに格納されている値「7」を取り出す。ここまでは、実施例1の場合と同様である。そして、この値「7」を、図3(c)に示した乱数値格納テーブルの乱数値格納ポインタi=0のセルに格納する。同時に、乱数取り出しテーブルTから、x=6に対応する値「7」を削除し、それ以降の値を一つずつ上に詰めるとともに、残乱数値mを1つ減らして「9」とし、かつ、格納ポインタiをインクリメントする。以下同様の処理を行って乱数値格納テーブルを埋めて行き、図3(c)に示すような乱数値テーブルを得る。
【0032】
このような乱数値テーブルが得られたら、図3(d)に示すように、乱数値取り出しポインタjの値をゼロからM−1まで順番に増やしながら値を取り出してゆく。これにより、1から10までの値がランダムな順番で、しかも各値が必ず1回得られる。
【0033】
図4は、図3に示した方法で乱数値を取り出す処理を示したフローチャートである。同図において、S201〜S203は、最初に乱数取り出しテーブルTを図1(a)に示すようにセットするとともに、残乱数値mに最初に値「10」をセットする処理を示している。この状態で、まず、自然乱数生成手段から乱数値nを取り出し(S205)、nをmで割ってその余りxを求める演算(剰余演算)を行い(S206)、乱数取り出しテーブルTからxをインデックスとして乱数値Rを取り出すとともに、乱数値テーブルの乱数値格納ポインタiのところに格納する(S207)。次に、乱数取り出しテーブルからx番目の行を削除して、x+1番目以降を一つずつ前に移動させ(S208)、そして、残乱数値mの値を1だけデクリメントし、格納ポインタiの値を1だけインクリメントする(S209)。このS205からS209までのステップをiが0になるまで、あるいはmが1になるまで繰り返すことによって、図3(c)に示した乱数値格納テーブルが得られる(S204)。
【0034】
こうして乱数値格納テーブルが得られたら、S211〜S214に示した処理を行って、図3(d)示すように、関数値取り出しポインタjを1ずつインクリメントさせながら、乱数値格納テーブルに格納されている値を順番に取り出す。
【実施例3】
【0035】
図5は、本発明の実施例3の基本的な考え方を示した図である。実施例3では、図3(c)に示した実施列2の乱数値テーブルを二つ用いて、一方のテーブルから乱数値を読み出している間に他方のテーブルに抽出した乱数値を書き込むようにすることによって、動作効率を向上させる。
【0036】
図5において、(a)と(b)は横軸を共通の時間軸としてある。TB[0]、TB[1]は、それぞれ、図3(c)に示したのと同様の乱数値テーブルを表す。ただし、当然のことながら、各乱数値テーブルに書き込まれる内容は、毎回異なる。図5(a)は、乱数値テーブルの書き込み状態(上)と、読み出し状態(下)の乱数値テーブルがTB[0]とTB[1]のどちらであるかを示している。乱数値テーブルは、図5(c)に示すように、それぞれが0番から9番までの10個のセルを有する。
【0037】
TS[0]、TS[1]は、それぞれ乱数値テーブルTB[0]、TB[1]のテーブル・ステータスを表し、図5(d)に示すように「0」のときは空き、「1」のときは読み出し中、「2」のときは書き込み中の各状態を意味する。wpは書き込みポインタであり、「0」のときはテーブルTB[0]の書き込み中、「1」のときはTB[1]の書き込み中を表す。rpは読み出しポインタであり、「0」のときはテーブルTB[0]の読み出し中、「1」のときはTB[1]の読み出し中を表す。
【0038】
図5(a)(b)を見ると、時刻t0からt1までは、TS[0]=TS[1]=0であるから、乱数値テーブルTB[0]、TB[1]は、いずれも空き状態である。また、wp=rp=0であるから、書き込みポインタも読み出しポインタも乱数値テーブルTB[0]を指し示している。
【0039】
時刻t1の時点で、TS[0]が「2」となるので、(a)に示すように乱数値テーブルTB[0]が書き込み状態となり、この書き込みが時刻t2まで続く。乱数値テーブルのすべてのセルにデータを書き込むのに例えば5ミリ秒かかるとすると、t1からt2までの時間が5ミリ秒に対応する。
【0040】
時刻t2の時点で乱数値テーブルTB[0]への書き込みが終了すると、TS[0]は、「1」となって読み出し状態となり、データがセットされた(書き込まれている)乱数値テーブルTB[0]からの読み出しが始まる。すなわち、乱数値テーブルTB[0]のセルTB[0][0]、TB[0][1]、TB[0][2]、・・・、TB[0][9]という順番で順次データが読み出され、これが時刻t5まで続く。一つのセルからの読み出しにかかる時間は、例えば2ミリ秒であり、全てのセルの読み出しにはほぼこれにセル数(ここでは10)を掛けた時間がかかる。
【0041】
他方、乱数値テーブルTB[1]については、時刻t2においてライトポインタwp=1となって書き込み可能となり、時刻t3においてTS[1]が「2」となって、書き込みが開始される。この書き込みは、時刻t4まで続く。時刻t4では、書き込みポインタwpは、「1」から「0」に変わって、乱数値テーブルTB[0]への書き込みが可能な状態となる(実際には、時刻t5まで乱数値テーブルTB[0]からの読み出しが続いているが)。
【0042】
時刻t5では、TS[0]が「0」となって乱数値テーブルTB[0]は空き状態になるとともに、読み出しポインタrp=1となって、乱数値テーブルTB[1]の読み出しが可能な状態となる。以下、同様にして、二つの乱数値テーブルTB[0]及びTB[1]に対して書き込みと読み出しが繰り返されてゆく。
【0043】
図6は、図5に示した実施例3におけるコンピュータの動作を示したフローチャートであり、(a)はメインのフローチャート、(b)は(a)のS308のタイマー処理の部分を詳細に示したフローチャートである。
【0044】
S301では、図5の時刻t0における状態にする動作であり、書き込みポインタwp=0、読み出しポインタrp=0とし、乱数値テーブルTB[0]、TB[1]をともに空き状態とする。S302の処理は図5の時刻t1での処理であり、TS[wp]を書き込み状態を表す「2」とするが、このときwp=0であるから、乱数値テーブルTB[0]が「2」とされて書き込み状態となる。
【0045】
S303の「乱数初期化2」とは、図4に示した実施例2のメインのフローチャートにおける「乱数初期化2」を指している。すなわち、図4のS201からS209までの処理を実行して、乱数値テーブルTB[wp](wp=0であれば乱数値テーブルTB[0]、wp=1であれば乱数値テーブルTB[1]を表す)に乱数値を書き込む処理を表している。
【0046】
S304は、読み出しポインタrpの値に対応するテーブル・ステータスTS[rp]を読み出し状態を表す「1」とする。最初は、rp=0であるから、乱数値テーブルTB[0]のテーブル・ステータスTS[0]を、読み出し状態を表す「1」とする。
【0047】
S305では、書き込みポインタwpを更新する。ここで、「更新する」とは、現在wp=0であれば、wp=1とし、現在wp=1であれば、wp=0とする。なお、ここでは現在のwpの値と論理値「1」との排他的論理和(xor)をとることによってwpの値を反転させる処理としている。
【0048】
S306では、これから読み出そうとする乱数値テーブルの読み出しインデックス(j)を初期化する。具体的には、j=0とする。
【0049】
S307では、その他のプログラム、具体的には、乱数取り出し処理以外の遊技機のプログラムの初期化を行う。
【0050】
S308では、タイマー処理を行う。このタイマー処理には、乱数値がセットされた(書き込まれた)乱数値テーブルからのデータの読み出しを意味し、具体的な処理は、図6のS320からS326に示すが、この処理は、S309以降の処理と並行して実行される。
【0051】
S309からは、S308のタイマー処理を実行しながら、同時に空いているもう一方の乱数値テーブルへの書き込みを行う。まず、空いている方の乱数値テーブルのテーブル・ステータスTSが読み出し状態になっていないかどうかを見る(最初はwp=0であるから、TS[0]が読み出し状態になっていないかどうかをみる)(S309)。読み出し状態になっていなければ(Noであれば)、S311からS314の処理を実行するが、これは前述のS302からS307までの処理と同じである。
【0052】
乱数値の読み出しを行うタイマー処理では、まずS320において、テーブル・ステータスTS[rp]が読み出し状態かどうかを見る(最初はrp=0であるから、TS[0]が読み出し状態かどうかをみる)。読み出し状態であれば(Yesであれば)、乱数値テーブルTB[rp]のj番目(jは最初は0。図3(d)参照)の値を読み出して(S321)、jの値を1だけインクリメントする(S322)。これにより、一つのセルからの読み出しが完了する。一つのセルからの読み出しに要する時間は、例えば前述のように2ミリ秒である。
【0053】
続いて、jの値がテーブル最大値(図3(d)の場合は9)かどうかを判定し(S323)、判定がNoであれば、遊技機が必要とするその他のタイマー処理を行い(S326)、次のセルについて、S320からの処理を繰り返す。S323の判定がYesの場合は、rpが示す乱数値テーブルのテーブル・ステータスTSを空き状態「0」とし(S324)、rpを更新する(S305参照)(S325)。
【0054】
以上の説明から分かるように、この実施例3では、一方の乱数値テーブルにデータをセットする(書き込む)間に他方の乱数値テーブルからデータを読み出すことができるので、1個の乱数値テーブルでデータのセットと読み出しを繰り返す場合のようにデータをセットしている間はデータを読み出すことができないという問題を解消し、動作効率を向上させることができる。
【実施例4】
【0055】
図7は、本発明の一実施例に係る遊技機用乱数取り出し装置のブロック図である。実際の乱数取り出し装置は、チップ化されて遊技機に搭載される。
【0056】
図7において、自然乱数n生成部5は、例えば熱雑音発生素子が発生するランダムパルス等から自然乱数生成する。ここで生成された自然乱数nは、p種類(pは、例えば0から255までの256種類)の値のうちいずれかであり、これは自然乱数n記憶部6に一時的に書き込まれる。
【0057】
乱数最大値M設定部1は、最終的に出力する乱数の最大値をオペレータが設定する部分である。ここで設定される乱数最大値Mによって、この装置の乱数出力の一周期が決まる。ここで設定された乱数最大値Mは、残乱数値m変更部2へ供給される。
【0058】
残乱数値m変更部2は、出力すべき乱数値の残りの数である残乱数値mを規定する部分であり、その初期値は乱数最大値M設定部1において設定される乱数最大値Mである。そして、後述のように乱数値Rが出力される度に、乱数値R出力部11からその旨の情報を受けてm=m−1の演算を行う。そして、m=0となった時点で、再び乱数最大値M設定部1から乱数最大値Mを読み出してm=Mに設定する。
【0059】
テーブルT作成部3は、最終的に出力される乱数値Rとラベルxとを関連づけて、図1(a)、図3(a)に示すようなテーブルTを作成し、テーブルT記憶部4に格納する。テーブルTのラベルの初期最大値は、乱数最大値Mによって決まる。テーブルTの各セルには、m+1種類(mは残乱数値)の異なる値が格納される。
【0060】
また、テーブルT作成部3は、乱数値R出力部11からの更新信号を受けると、テーブルT記憶部4から読み出したテーブルTのラベルの最大値を、残乱数値m更新部の残乱数値mに基づいて更新するとともに、テーブルTの中の当該乱数値Rを削除して、図1(e)、図3(d)のような新しいテーブルTを作成し、これを新たにテーブルT記憶部4に格納する。これは、1周期中に同じ値が1回だけしか出現しないようにするためである。
【0061】
ラベル値x演算部7は、自然乱数n記憶部6に記憶されている自然乱数nと、残乱数値m更新部2から与えられる残乱数値mとから、
x=n mod m
を演算してラベル値xを求め、得られたラベル値xをラベル値x記憶部8に格納する。乱数値R取得部9は、テーブルT記憶部4に格納されているテーブルTから、ラベルxに対応する値Rを読み出し、これを乱数値R記憶部10に格納する。
【0062】
乱数値R出力部11は、チップ外部からの要求や、所定のタイミングに基づいて、乱数値R記憶部10に格納されている値Rを乱数値として出力する。乱数値R出力部11はさらに、チップ外への乱数値Rの出力と同時にリセット部へリセット出力信号を供給し、また、残乱数値m更新部2及びテーブルT作成部3へ、更新信号を供給する。
【0063】
リセット部12は、乱数値R出力部11からリセット出力信号を受け取ると、自然乱数n記憶部6、ラベル値x記憶部8、乱数値R記憶部10へリセット信号を供給する。自然乱数n記憶部6、ラベル値x記憶部8、乱数値R記憶部10は、リセット信号を受け取ると、それまで保持していたデータをリセットして初期状態へ戻る。
【0064】
図7に示した装置に基づいて、図3及び図4に示した実施例2の方法を実行することができる。また、図1及び図2に示した実施例1の方法を実行させる場合は、図7に示したいくつかの機能ブロックを変更するだけでよい。さらに、図7の装置を二つ用意してこれらを主要部分として、図5及び図6に示した実施例3の方法を実施することができる。
【0065】
(その他の実施例)
上記の各実施例では、剰余演算を用いることによって、例えば256個の自然乱数値から10個の乱数値を抽出した。このように剰余演算を用いる実施例は実施形態として好ましいものではあるが、本発明は上記の各実施例には限定されず、1からp(pは自然数)までの値をランダムに生成する乱数生成部から得られる乱数値に対して、所定の処理を行うことによって、1からm(m<p)までの値を重複なくランダムな順番で抽出するものであれば、本発明の技術的範囲に含まれる。
【0066】
例えば、1からpまでの乱数値を取り出し、この値が1からmまでのいずれかの値であるときは抽出値とし、それ以外のときはこれを破棄し、続いて1からpまでの乱数値を取り出し、これが1からmまでのいずれかの値であり、かつ、すでに抽出値としたものでないときには新たな抽出値とするという操作を、最終的にm個の抽出値が得られるまで繰り返すことによっても、m個の抽出値を重複なくランダムな順番で抽出することができる。
【図面の簡単な説明】
【0067】
【図1】本発明の実施例1の基本的な考え方を示した図である。
【図2】図1に示した方法で乱数値を取り出す処理を示したフローチャートである。
【図3】本発明の実施例2の基本的な考え方を示した図である。
【図4】図3に示した方法で乱数値を取り出す処理を示したフローチャートである。
【図5】本発明の実施例3の基本的な考え方を示した図である。
【図6】図5に示した実施例3におけるコンピュータの動作を示したフローチャートである。
【図7】本発明の一実施例に係る遊技機用乱数取り出し装置のブロック図である。
【符号の説明】
【0068】
1 乱数最大値M設定部
2 残乱数値m更新部
3 テーブルT作成部
4 テーブルT記憶部
5 自然乱数n生成部
6 自然乱数n記憶部
7 ラベル値x演算部
8 ラベル値x記憶部
9 乱数値R取得部
10 乱数値R記憶部
11 乱数値R出力部
12 リセット部

【特許請求の範囲】
【請求項1】
p種類(pは1より大きい自然数)の値をランダムに生成する乱数生成部から得られる乱数値に対して所定の処理を行って、m種類(m<p)の値を重複なくランダムな順番で抽出することを特徴とする遊技機用乱数抽出方法。
【請求項2】
p種類の値をランダムに生成する乱数生成部から得られる乱数値に基づいて、m種類(m<p)の値をランダムに抽出する遊技機用乱数抽出方法であって、
各セルに0からm−1までの値をインデックス数としてラベル付けしたテーブルに、1からmまでのm個の異なる値を格納する第1ステップと、
前記乱数生成部から得られた乱数値n1を被演算数、y=mを演算数として剰余演算
x=n1 mod y
を行って演算結果xを求める第2ステップと、
前記テーブルのインデックス数がxのセルから抽出値を取り出す第3ステップと、
前記テーブルのインデックス数がxのセルから取り出した値を削除するとともに、インデックス数がx+1以降の各セルに格納されている値を、削除により空いたセルに1ずつ移動させてインデックスの最大値を一つ減らす第4ステップと、
前記yの値を1だけデクリメントする第5ステップと、
前記第2ステップから第5ステップまでの処理をm−1回繰り返し、最後にインデックス数0のセルから抽出値を取り出すことにより、合計m個の抽出値を取り出す第6ステップと、
を含んでいる遊技機用乱数抽出方法。
【請求項3】
前記乱数生成部は、自然乱数生成装置からなるものである、請求項1又は2に記載の遊技機用乱数抽出方法。
【請求項4】
p種類(pは1より大きい自然数)の値をランダムに生成する乱数生成部と、前記乱数生成部から得られる乱数値に対して所定の処理を行って、m種類(m<p)の値を重複なくランダムな順番で抽出することを特徴とするデータ処理部を含むことを特徴とする遊技機用乱数抽出装置。
【請求項5】
p種類の値をランダムに生成する乱数生成部と、
各セルに0からm−1までの値をインデックス数としてラベル付けされ、各セルにm個の異なる値を格納するテーブルと、
前記乱数生成部から得られた乱数値n1を被演算数、y=mを演算数として剰余演算
x=n1 mod y
を行って演算結果xを求める演算手段と、
前記テーブルのインデックス数がxのセルから抽出値を取り出す第1ステップと、前記テーブルのインデックス数がxのセルから取り出した値を削除するとともに、インデックス数がx+1以降の各セルに格納されている値を、削除により空いたセルに1ずつ移動させてインデックスの最大値を一つ減らす第2ステップと、前記yの値を1だけデクリメントする第3ステップと、を実行するデータ処理部とを備え、
前記データ処理部は、前記第1ステップから第3ステップまでの処理をm−1回繰り返し、最後にインデックス数0のセルから抽出値を取り出すことにより、合計m個の抽出値を取り出すことを特徴とする遊技機用乱数抽出装置。
【請求項6】
前記乱数生成部は、自然乱数生成装置からなるものである、請求項4又は5に記載の遊技機用乱数抽出装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2006−181191(P2006−181191A)
【公開日】平成18年7月13日(2006.7.13)
【国際特許分類】
【出願番号】特願2004−379405(P2004−379405)
【出願日】平成16年12月28日(2004.12.28)
【出願人】(591107481)株式会社エルイーテック (37)
【Fターム(参考)】