作成中のゲームの場合:HTML5 <audio>
要素1個とJavaScriptを使用して、ランダムキーをオブジェクト(配列になります)から選択するプレイリストを作成しようとしています。 。選択されたオブジェクトは、プレイヤーの状態の「気分」に基づいています。次に、ArrayからソングのソースURLを抽出し、選択したソングがまだ再生されていない場合はロードしてから再生します。次のようにplay
機能がある(オブジェクトリテラルの一部である):「ランダム」配列の操作
play: function(option) {
if (G.audio.enabled) {
var player = G.audio.player,
playlist = G.audio.playlist;
if (option && G.audio.playlist[option]) {
G.audio.mood = option;
var song = playlist[option][Math.floor(Math.random() * (playlist[option].length))][2];
if (G.audio.current != song) {
G.audio.current = song;
player.attr("src", song);
player[0].load();
player[0].play();
} else {
G.audio.play(G.audio.mood);
}
} else {
G.audio.play(G.audio.mood);
}
try {
player[0].removeEventListener("ended", G.audio.play);
} catch (e) {}
player[0].addEventListener("ended", G.audio.play);
}
}
ですから、例えば、私たちは(気分で)「英雄」のカテゴリを扱う(そして唯一持っていた)された場合には、G.audio.playlist
次のようになります。最初にしながら、2曲目はほとんど果たしていないと第三は、通常負荷時に再生するものです:
heroic: [
[
"Song Title",
"Artist",
"Source url",
"other info"
],
[
"Song Title",
"Artist",
"Source url",
"other info"
],
[
"Song Title",
"Artist",
"Source url",
"other info"
]
];
すべてが一つのことを除いて、正常に動作します。
playlist[option][Math.floor(Math.random() * (playlist[option].length))][2];
は、配列の最初の([0]
)と第3キー([2]
)への優先権を与えるだろう:
だから、私の質問は、なぜ上の任意の論理的な推論はありますか?
バイアスはありますか?乱数生成用のコードはうまくいきます... – emboss