• ベストアンサー

ランダムはどう起こりうる??

MP3プレーヤーを聞いていてふと思ったんですが、 シャッフルってどうなってるんでしょうか?? トラックが1~13まであるとして、8を再生して、その次は3、となるときの「意思決定の根本の理由」は何なのでしょう? Lingoと言うプログラムをしたことがあるのですが、そのランダム設定をするときは、ルールをつかい1~13までの数字を打ち込むだけだったんです。 ランダムを作る数式があるとYahooの質問で探したのですがあまり理解できませんでした。割る方式で余りの数字がどうだとか。。 直感的に質問したのでわかりにくいかもしれませんが、わかりやすく教えていただけるかた、ご教授お願いします!

質問者が選んだベストアンサー

  • ベストアンサー
  • reviera
  • ベストアンサー率22% (17/76)
回答No.3

「ランダム」と言っても実は本当にランダムなわけではありません。 コンピュータは知能がある訳じゃないので、いくら性能がよくても自分で本当にランダムな数字を「思いつく」事はできないからです。 ではどうやってランダムな数字を発生させているのか?miragediveさんが知りたいのはこの部分だと思います。 昔からある原理を一つ教えます。実はコンピュータには乱数列と言うランダムな数字の列があらかじめインプットされています。順番がめちゃくちゃな単なる数字の列です。コンピュータは乱数発生の指令を受けるとただ単にこの列の一番最初から読み上げるだけです。なぜ一番最初から読み上げるかと言うとお気づきの通り途中から読み上げるにしてもその「途中何番目か」というランダムな発想がコンピュータには出来ないからです。こうすることによってあたかもコンピュータが自分でランダムな数字を選んできたかのように見せることが出来ます。 しかしこれだと当然ですが法則性がすぐに現れてしまい同じ乱数列が何度も出現します。これを防ぐためには毎回乱数列の途中から読み上げさせればいいのですが(ランダマイズと言う)、先ほど言ったようにコンピュータには「適当な途中」を考える事が出来ません。どうすればいいかというと原始的な方法のひとつにその時の時刻を使う方法があります。コンピュータに時間機能が内蔵されている場合、刻々変わる時刻の「秒」の数字を使い、乱数発生を指令されたその瞬間の秒の値でその乱数列の何番目から読み上げるか決めます。「秒」を意識してコンピュータ操作する事はないのでこれでほぼランダムと言える数字を取り出すことが出来ます。実際には秒なり分なり操作時間なりをもっともっと複雑な数式に入れてかなり高度にランダマイズしますが、初期のパソコンゲームなどはランダマイズが単純だったので敵の出現にすぐ法則性が見えたりしました。 なおこれは非常に古いランダムの原理なので実際今のコンピュータはどのような原理を利用しているかは分かりません。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • Allemagne
  • ベストアンサー率36% (18/50)
回答No.5

最も安いアルゴリズムとしては数列を使ったやり方で(多分これのことっすね) x[n+1]=(a*x[n]+b)mod(m) という方法があります。ちなみに(x)mod(y)は(ドイツ語では少なくとも)moduloと呼ばれるオペレーターでxをyで割ったときの余りが出ます。例えば17mod3だったら2になります。ここではaかけるx[n]にbをたしたものをmで割ったときのあまりが出るということになりますね。aとbはどんな数字でも構いませんが周期性を避けるために大きな数字をいれるのが理想です。 ちなみにExcelをつかってa=59,b=37, m=13で計算してみました。ようするにn+1番目のxの値はn番目のxの値に59をかけて37をたしたものを13でわったときのあまりです。(0は13として扱ってみてください) 1 5 7 8 2 12 4 0 11 10 3 6 1 5 次にa=67,b=71, m=13でやってみました。 0 6 5 3 12 4 1 8 9 11 2 10 0 6 この乱数で問題なのは必ず周期が最大でmになってしまうということなので適当なところでaとbを変える必要があります。

全文を見る
すると、全ての回答が全文表示されます。
  • lc-holic
  • ベストアンサー率37% (25/66)
回答No.4

おそらく、コンピューターがどうやってランダムな数字を生成しているのか、という話なのでしょうが、 これは一般的に擬似乱数と呼ばれる、乱数っぽい数字を作り出すためのアルゴリズムが使われています。 あくまでも「っぽい」というだけで、本物の乱数ではありません。 一応、Wikipediaにリンクしておきますが、googleなどで他の擬似乱数に関するサイトを検索されるのが良いかと思います。 http://ja.wikipedia.org/wiki/%E6%93%AC%E4%BC%BC%E4%B9%B1%E6%95%B0

全文を見る
すると、全ての回答が全文表示されます。
  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.2

乱数を作るには幾つか手法が有るよ。 lingoのルールがどうのっていうのは randomSeed の事かな? 通常のランダムはNo1の通り MP3プレーヤ系で「全部選曲されるまで同じ曲は出ない」という乱数の場合は 曲数分の箱を用意してそれをかき混ぜ それをそのまま順番として使う方法とかがあるよ 乱数自体の発生のさせかたは ・・・・・ http://www.google.co.jp/search?q=%E8%A1%8C%E5%88%97%20%E7%96%91%E4%BC%BC%E4%B9%B1%E6%95%B0&hl=ja&lr=lang_ja (探し方が違ったかも・・・) 実は行列の演算で求まるよ。(手計算できる) そこで「基」になる値を変化させると開始値とその後が変化するんだけど、この「基」の値を指示するのが randomSeed

全文を見る
すると、全ての回答が全文表示されます。
  • max39kw
  • ベストアンサー率14% (2/14)
回答No.1

こんにちは、 Lingoと言うのはわかりませんがExcelで作る場合、まず乱数を発生させます。 RANDです。0から1までの乱数(任意の数)がでます。 この数値を13倍(トラックの数)します。そうすると0から13までの数になります。それに+1すると1から14になります。小数点以下を切り捨てると1から14の整数になります。確率は低いのですが14がでた場合13とするかもう一度やり直すかです。 まちがってたら、すみません

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 音楽のランダム(シャッフル)再生方式の違いについて

     音楽プレーヤーでランダム(シャッフル)再生を選ぶと、A社のプレーヤーは全曲から1曲づつ選んですべての曲が1回再生して終了しますが、B社は1曲かかった後またすべての曲からランダム抽選するためいつまでたっても再生が終了しなくなります。  私はA方式が一般的かと思っていたら、先日購入したコンポはMDがA方式でCDがB方式でした。  B方式はいつまでも再生が終わらないし、同じ曲が連続して再生されたりして、非常に不満です。  業界でランダム(シャッフル)再生の方式を統一(できればA方式で)できないものでしょうか。あるいはA方式とB方式の名前を変えるとか。  同じように困っている人がいるのではと思い、質問してみました。

  • flashliteでランダム(シャッフル)を作りたい。

    いつもお世話になります。今回ご質問させて頂く内容はFlashlite1.0で、1~10までの数字をランダムかつ同じ数字がかぶらないように表示する方法(シャッフル)です。Flashlite2.0からは配列が使え、考えればシャッフルする方法もあったのですが、1.0ですと配列が使えない為やり方がわかりません。FlashのASは経験あるのですが、Flashliteの知識や経験があまりなく困っております。どなたかお教え頂けたらと思います。 具体的な内容なのですが、今作ったスクリプトが以下です。iという文字にsetを使い擬似配列(?)を組みarray0~array9という変数をランダムな数字で表すといったスクリプトを組んだのですが、これだとランダムなので同じ数字が何回も出てきてしまいます。これを同じ数字は省いてダブる数字が無いようにしたいと思っています。 ▼スクリプト▼ num = 10; for(i = 0;i < num;i++){ set("array" add i,random(10)); } // 確認用 trace(array0); trace(array1); trace(array2); trace(array3); trace(array4); trace(array5); trace(array6); trace(array7); trace(array8); trace(array9); お手数お掛けして申し訳ありません。どなたかお教え頂ける方がいらっしゃいましたらよろしく御願い致します。 制作環境はAdobe Flash CS3です。

    • ベストアンサー
    • Flash
  • WMPの自動再生リストでランダムに曲を選択する方法

    ウインドウズメディアプレイヤー11でMP3プレイヤーに同期させるためのプレイリストの作成方法についての質問です。 やりたいことは、自分で付けた評価で星が4つ以上の曲の中から、曲をランダムに選択して、合計で1500MB以下になるような自動再生リストを作成することです。 どうしたら良いでしょうか? iTunesのスマートプレイリストならば、 次のすべてのルールに一致: 種類がMPEGオーディオファイル レートが★★★★~★★★★★の範囲内 上限1500MB以内 選択方法ランダム ライブアップデートする という設定で実現できるのですが。 使用しているMP3プレイヤーはgigabeatUです。

  • ヌメロンのプログラム

    C言語で3桁ヌメロンをつくりたいと思うのですが プログラムが思いつきません (ヌメロンは番組でやっているのとルールは同じです でもシャッフルやダブルなどのアイテムはいりません 数字も完全ランダムでいいです) ソースコードかフローチャートなどヒントになる ものを教えてください よろしくお願いします

  • MP3とAACなどの違い

    MDがぶっつぶれたので話題のMP3プレーヤーを購入予定です。ただド素人で根本からわかっていないので、ネットで色々調べましたが難しくよくわかりません。 MP3とかAACとかWMAとかMP4とか圧縮の方式なのかと勝手に思っていますがどのような意味でしょうか。関係ないかもしれませんが、MIDIというものはネットでクラシックをきいた時に使っていた技術と記憶していますが同じようなものでしょうか? 本当にド素人で的をえていない質問ですが教えて下さい。ごめんなさい。

  • ランダム+外部読み込みとウインドウサイズ指定を組み合わせる

    ランダムで表示されるバナーの画像とリンク先を外部テキストファイルから読み込むと言うものを、過去ログなどを参考に作りました。 ランダムは数字をシャッフルして割り当て、その割り当てられた数字の文字列を参照すると言った原始的?なものです。 lis = [1, 2, 3, 4, 5]; rlis = []; for (k = lis.length; k > 0; k--) { RAN = Math.floor(Math.random() * (k)); KAE = lis[RAN]; rlis.push(KAE); lis.splice(RAN, 1); } trace("rlis= " + rlis); for (k = 0; k < rlis.length; k++) { trace("rlis[" + k + "]= " + rlis[k]); } 外部テキスト &data0=img/image01.gif,http://www~~~& &data1=img/image02.gif,http://~~~& _root.onRelease = function() { _root.getURL(myLV["data"+rlis[0]].split(",")[1],"_blank"); }; 以下バナーの画像分 と言った方法でこれに関しては一応上手く動いているのですが、今度はこれに、「開いた先のウインドウサイズを指定する」と言うスクリプトを記述したいのです。 各所参照させて貰った所、 on (release) {  getURL ("javascript:~~~()"); と言う記述が一般的なようなのですが、上記の記述にこれを当てはめようとしても上手くいきません。)または,が必要ですと言うエラーが出ます。 これは、根本的に無理な事をしようとしているのか、ちょっとした記述間違いなのか、教えて貰えたらありがたいです。 補足として、環境はCS3です。

    • ベストアンサー
    • Flash
  • iPod nano ランダム再生の内容

    iPod nano を購入しようと思っているのですが、nano のランダム再生について質問です。 現在使っている他メーカーのMP3プレイヤーのランダム再生はどうやら、  再生リストの中からランダムで選び出した曲を決まった順番で再生 しているらしいのです。 例えばフォルダの中にA,B,C,D,Eの5曲がある場合にランダム再生を実行すると、 自動的にA,C,Eを選び出し(ここは流石にランダムで選んでるようです)、 以降、A,C,E,A,C,E,...のように、同じ曲ばかりを繰り返します。 実際に少ない曲数で試したことはないのですが、 同じフォルダの中でランダム再生をしているとそのうち、 次に再生される曲がわかるようになるのでたぶん間違いないです。 で、iPod nano のランダム再生はどのような再生方法なのかに興味があります。 理想は、 ・一度流した曲は、再生リスト内の曲を全て再生するまでは再生しない。 というものです。 フォルダの中にA,B,C,D,Eの5曲がある場合、 最初にBを再生した後は、次に来る曲はA,C,D,Eのいずれかで、 次にAが選択された場合は、次に来る曲はC,D,Eのいずれか、といった再生法を望んでいます。 iPod nano の購入の参考にしたいので、 詳しくわかる方いましたらよろしくお願いします。

  • i pod シャッフルに曲を入れたい・・・

    こんにちは。 私の家族から,知人がi podシャッフルをもっていて,それに曲を入れたいが パソコンが古いためできないのでやってくれないか? と頼まれました。 それで,今手元にあるのがi podシャッフルの本体だけです。。。 私はi podというものは,mp3プレーヤなので,USBポートに差し込んで そこに音楽のmp3ファイルを置けばいいのかな~くらいに思っていました。 それでやってみて,ファイルを置くことはできるのですが, 自分のヘッドフォンを差し込んで再生?やってみてもできません。 そこで質問したいのですが ◆i podシャッフルに音楽を入れるのはどういう方法がありますか? (自分のもっているmp3ファイルを入れることはできますか?) ◆i podシャッフルの中の音楽を聴くのにはどのように操作すれば良いのでしょうか? (後ろの電池マークのボタンを押してから全面の再生マークを押せばOK?) 説明書も何にも手元になく,少し調べてみるとi tunesというもの(コレはソフト?)をインストールする必要があるという感じなのですが それがどういう役割をもっているのかも分かりません。 本当に全く分からない状況なのですが,お持ちの方,どうか教えていただけませんでしょうか。 よろしくお願いいたします。

  • 同じmp3なのに再生できない・・・?

    ipodにmp3の曲を取り込んだところ、再生されずすぐに次のトラックにいってしまう曲があります。 iTunesでは普通に再生できます。 Windows Media Player でも再生できますが、 VLC Media Player では再生できませんでした。 iTunesのプロパティで再生できる曲と比べて見たところ、 エンコード方式が不明、もしくは LAME3.90 ビットレートに(VBR)と記されている の上記2つが違いでした。 同じmp3なのになぜ再生できないのでしょうか。 おそらくエンコードが原因だと思うのですが 解決方法がわかりません。 ご回答お待ちしております。

  • エクセル2010で条件付き書式の方法

    エクセルの「D列」に文字列として数字が入力されています 例 23_2 30_3 56_1 等です この「D列」で左から2文字を判断して太文字あるいはフォント色を変更いたい場合 (条件書式ルールで 「数式を使用して、書式設定をするセルを決定」 を選択) 30_3 と入力されたセルの書式を変更したい場合・・ その時の数式の入力なのですが =LEFT(D1,2)="30" としたのですが機能しません どのように数式を打ち込めば良いか教えてください