完全にランダムなシャッフル再生は可能か(上)
はっはっは。
ある程度技術を習得したプログラマならこの内容を面白く読めると思うんだけども、この文章での笑い所ってちょっと説明が難しかったりする。
Cでいうと、
// MusicCount = 曲合計
// PlayNo = 演奏する局番号
PlayNo = rand() * MusicCount / RAND_MAX;
──という部分の話である。
「PlayNo = rand() * MusicCount / RAND_MAX;」というたった一文だけのために、上下篇でもってあれこれ語られるものなのだけど、この文法における「rand()関数」のプログラム原理をあらかじめ知る必要があるからだ。
これは、「ランダムはランダムじゃない(でたらめはでたらめじゃない)」という、鋼の錬金術師でいうと「ありえないはありえない」というセリフに匹敵する、プログラムにおける原理みたいなものである。
ぶっちゃけた話、コンピュータにおける基本的なランダム数値とは、6,8,2,9,3,5,7,0,4,1,6,8,2,9,3,5,7,0,4,1,6,8,2,9,3,5,7,0,4,1,6,8,2,9,3,5,7,0,4,1,,.... と、ある計算式でもって順番に出力される循環数値なのだ。
もちろん、これを破る方法はある。
コンピュータに最初の数値(上記でいうと、最初の「6」)を選ばせなければいいのだ。
そんな方法はあるのか?
これがあるのだ。それは「人間というキチガイの介入」である。
なんのこっちゃいって思った?
具体的にはこういうことである。
「人間がプログラムの実行を行った時間(秒でも、ミリ秒でも何でもいい)を、最初の数値とする」
Cでいうsrand()、VBでいうとRandomizeである。
これで少なくとも毎回起動するごとにまったく異なるランダム値が出てくるようになるのだ。
しかし、これでもまだランダムには成りきれていない。なぜなら、単に最初の数を設定しただけで、出現する数の順序は変わっていないのだから。
だったら、ことあるごとに時間を計測するか?
いや、そうもいかないだろう。
コンピュータの処理は、それがある一定時間で処理できるという行儀の良いものほど、時間計測というものが仇になるのだ。下手したら、1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,....と計測した時間を辿るだけのものになってしまうのだから。たとえピコ秒単位で計測ができたとしても、飛び飛びに値を拾うだけである。
アクションゲームのように常に人間の入力が期待できるものであるなら、その都度マイクロ秒単位で計測するだけでも、結構面白いランダム値が引っ張り出せるかもしれないけどね。
解説おしまい。
新しい日記
- 2009/9/4
- 2009/9/3
- 2009/8/3
- 2009/7/19
- 2009/6/8
- 2009/6/5
- 2009/6/4
- 2009/6/3
- 2009/5/24
- 2009/5/1
- 2009/4/19
- 2009/4/16
タグ:
日記履歴
- 2009年09月
- 2009年08月
- 2009年07月
- 2009年06月
- 2009年05月
- 2009年04月
- 2009年03月
- 2009年02月
- 2009年01月
- 2008年12月
- 2008年11月
- 2008年10月
- 2008年09月
- 2008年08月
- 2008年07月
- 2008年06月
- 2008年05月
- 2008年04月
- 2008年03月
- 2008年02月
- 2008年01月
- 2007年12月
- 2007年11月
- 2007年10月
- 2007年09月
- 2007年08月
- 2007年07月
- 2007年06月
- 2007年05月
- 2007年04月
- 2007年03月
- 2007年02月
- 2007年01月
- 2006年12月
- 2006年11月
- 2006年10月
- 2006年09月
- 2006年08月
- 2006年07月
- 2006年06月
- 2006年05月
- 2006年04月
- 2006年03月
- 2006年02月
- 2006年01月
- 2005年12月
- 2005年11月
- 2005年10月
- 2005年09月
- 2005年08月
ほぼ作家リンク
■ ゲームライター ■
- やくも茶館 -Yakumo Yu-
- OWN WAY OWN LIFE
- Heaven's Mirror〜鏡裕之HP〜
- MEGANE TOMONOKAI
- ちょこ
- ハヤシノシナリオ
- 縁側
- Higurashi
■ ゲーム関連 ■
- DreamGarden
- 駒亦賀緒探偵事務所
- りぺあ 〜Patch Library〜
- 娘々倶楽部
- 小鳥館
■ その他作家 ■
- AtelierAge17
- みやきな
- きままにマンガみち
- 赤眼堂/魔女学園
- まソと僕
- 蒼穹図
- 神技塾
- コミ☆ネオ
- コウタリ・ミックス
■ その他 ■
- Surfersparadise
- デジタルトキワ荘
- インターネット先進ユーザーの会
検索キーワードTOP20
書き方 フローチャート シナリオ ゲーム ゲームシナリオ 例 エクセル 結合子 ノベルゲーム フローチャート書き方 エロゲ シナリオの書き方 描き方 作り方 プロット 線 交差 ゲームフロー 立ち絵 ギャルゲー
Copyright (c) 無頼寿あさむ/ Powerd by Digital Cottage.Net
お問い合わせとご意見ご希望ご感想は、メール送信フォームにどうぞ
※ メールでの連絡ですが、お手数ですがなるべくメール送信フォームをご利用ください。 ※
※ 直接送られた場合、テキスト内容によってはSPAM判定ソフトが誤判定して内容を確認できない場合があります。 ※