
No.3ベストアンサー
- 回答日時:
「乱数」には、2種類あって
本当の「乱数」と、実は計算しているだけの「疑似乱数」です。
例えば。
サイコロを転がすとき、転がす人の持ち方、投げ方、転がす場所...などなど、いろんな要素が絡んで、投げるたびに違う値になります。
予想することができません。
こういうのが本当の乱数です。
こういう乱数を使うことは、「決まった計算を正確に繰り返す」ことを求められるコンピュータにとっては、非常に難しいことです。
例えば
3 4 0 5 7 10 9 2 8 6
これ、ばらばらの数字に見えて、実は
(3 × 7 + 5) ÷ 11 = 26 ÷ 11 = 2 余り 4 → この4を採用
(4 × 7 + 5) ÷ 11 = 33 ÷ 11 = 3 余り 0 → この0を採用
(0 × 7 + 5) ÷ 11 = 5 ÷ 11 = 3 余り5 → この5を採用
...
と同じ計算で求めています。こういう、計算で求めてはいるものの、乱数と言っていいような性質を持ったものを「疑似乱数」と言います。
「決まった計算を正確に繰り返す」ということで、コンピュータでは簡単なことです。
このとき、最初の状態を表わす値を種 と言います。
種が同じで、計算方法が同じなら、出てくる乱数も同じになります。
そこで、ゲーム等のように、同じ乱数が出てきては困る場合は、毎回変わるような値を種に使います。
例えば、現在時刻とか。
> 例えば、ゲームがあるとしてPCとPS3で違うプラットフォームでも同じゲームなら決まったパターンの乱数から影響受けるのでしょうか?
一概に言えません。
同じ種の選び方、同じ計算方法を使っていたら、同じになります。
逆に言えば、これらが違えば乱数も違います。
プラットフォームを移行する際に、乱数発生部まで同じものを使うのか、新たに作るのか、ゲームによるでしょう。
良くわかりました。
現実で起こりうる事、アナログ的な条件などから導かれるのが本来の数学的な乱数という事ですね。
コンピューターは正確な条件に基づいて求めるモノを算出してるので実際のようなランダムな決定は逆に再現が難しのですね。
>そこで、ゲーム等のように、同じ乱数が出てきては困る場合は、毎回変わるような値を種に使います。
例えば、現在時刻とか。
コンピューターでは組み合わせる要因によって変化を付けるのが、この”乱数”に値すると言うのが分かりました。
2人とも大変分かりやすく解説下さり助かりました。
No.2
- 回答日時:
> 乱数は何の部分を決定しているのですか?
ランダムにする必要のある部分です。
例えば、
・Windows付属のマインスイーパーやソリティアの初期配置
・スライドショーをランダムに表示する場合の表示順
・スクリーンセーバーのラインアートやリボンの表示内容
・ペイントのエアブラシのドットの散布
など。
> また、媒体の違いでも何か違いますか?
媒体とは、一般的にCD-ROMやUSBメモリなどのメディアの種類を指します。
これが違っても、通常は乱数の発生に影響を与えません。
> PC、PS3など(ゲーム機)、スマホなどの端末。
プログラムの動作するOSやプラットフォームが違えば、乱数の発生に影響のある可能性はありますが、同じアルゴリズムや乱数のタネ(seed)だと、同じ系列の乱数が発生します。
> 理解できるか分かりませんが、それらを知っている事で何か役に立つ事はありますか?
ゲームの攻略なんかには、使われる事があるかも。
上の例だと、例えばマインスイーパーは、ゲームをスタート(F2)した際の時刻(秒単位)をタネにして乱数を発生するようなので、PCの時計を調整して同じ時刻にゲームスタートするようにすると、同じ配置になるっぽいです。

この回答への補足
プログラムの動作するOSやプラットフォームが違えば、乱数の発生に影響のある可能性はありますが、同じアルゴリズムや乱数のタネ(seed)だと、同じ系列の乱数が発生します。
例えば、ゲームがあるとしてPCとPS3で違うプラットフォームでも同じゲームなら決まったパターンの乱数から影響受けるのでしょうか?多分そういう事?
neKo_deuxさん 回答有難うございます。
媒体とは、一般的にCD-ROMやUSBメモリなどのメディアの種類を指します。
これが違っても、通常は乱数の発生に影響を与えません。
媒体(^^; そうでしたW 書いてる時は気づいてませんでした。ハードでしたね、何で気づかなかったんでしょうW。
最初の回答者さんの解説と合わせて大体理解しました。
画像も付けてもらって有難いです。
No.1
- 回答日時:
乱数を一言で言い表すと「サイコロ」です。
サイコロを振れば数字が出ますが、その数字は常に同じとは限りません。
つまり、結果が常に同じになるとは限らない数字を出すために使うのが乱数です。
そのため、乱数は決定よりは主にゲーム等でランダム要素を出すために使われます。
例えば能力成長系アイテムを利用した際、毎回同じ結果になってはそのアイテムを溜め込めば良いという事になります。
それでは面白みがないので、常に同じ結果が出るとは限らないように乱数を利用して変動幅を変えているのです。
他にもパチンコやパチスロの当たり判定にも乱数が使われています。
これは一定の周期で常に特定の数値が出ると大当たりを狙い撃ちすることが可能になりますが、これではそういう術を知らない客は不利になりますし、なによりパチンコ屋を営業する業者が困ります。
よって、狙い撃ちできないようにランダムな結果を出すために乱数を利用しているのです。
乱数によって出された数字が大当たりの数字と合致していたら大当たり、違っていたらハズレというわけです。
乱数が媒体によって異なるかどうかですが、これについては媒体よりも内部で使われる演算装置(CPU)やプログラミングの仕方、乱数の使われ方によって異なると答えるしかありません。
例え同じハード、同じセーブデータを利用し、判定のタイミングを常に同一にすれば結果が同じになるとはいえないのが乱数ですから、媒体によって結果が異なるのは当たり前の話になるでしょうね。
最後に知ってて役に立つかどうかとなると…、まぁ、せいぜい話のタネ程度になるという程度です。
nosamajinさん、時間を割いて頂き有難うございます。
なるほど、プログラムとは違いましたね。
>乱数によって出された数字が大当たりの数字と合致していたら大当たり、違っていたらハズレというわけです。
ロト6の抽選みたいなものと理解してよいですね、スッキリしました。
>最後に知ってて役に立つかどうかとなると…、まぁ、せいぜい話のタネ程度になるという程度です。
いいえ、解説頂き有り難うございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで関数をつくる
-
65536は2の何乗なのでしょうか?
-
matlabで計算終了
-
排他的論理和 BCC(水平パリテ...
-
VBAの再計算が反映されない件に...
-
スレッド処理からダイアログを...
-
VBA入力フォームで労働時間の計...
-
Perlで時間の計算
-
EXCELなどで「返す」という表現
-
バッチファイルでウインドウを...
-
階乗のマクロ
-
分数計算で分母と分子を維持す...
-
数十万番目の素数を表示させる...
-
文字列探索KMP法の計算量に...
-
C#の演算でオーバーフローして...
-
エクセル以外で麻雀の成績を管...
-
ASPで小数点の設定
-
Vba Cells.Findについて教えて...
-
変化させるセルが変化しない
-
アドオン利率を実質年率に変換
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
変化させるセルが変化しない
-
VBAの再計算が反映されない件に...
-
EXCELなどで「返す」という表現
-
VBAで関数をつくる
-
matlabで計算終了
-
排他的論理和 BCC(水平パリテ...
-
モジュラス103の計算とは何でし...
-
引き放し法による除算アルゴリ...
-
バッチファイルでウインドウを...
-
スレッド処理からダイアログを...
-
数値計算の高速化 (cos, sin, exp)
-
エクセルで特定のセルのみを任...
-
モジュロ
-
関数を使わないで日付の計算を...
-
階乗のマクロ
-
時間(ミリ秒を含む)の引き算
-
なぜオーバーフローになるので...
-
論理演算子.NOT.の使い方
-
PHPとJavaでSHA256の結果を同じ...
おすすめ情報