Javascript 与“合作”;“随机”;阵列
对于正在制作的游戏:使用一个HTML5Javascript 与“合作”;“随机”;阵列,javascript,random,Javascript,Random,对于正在制作的游戏:使用一个HTML5元素和一些JavaScript,我试图创建一个播放列表,从对象(将是一个数组)中选择一个随机键。选择的对象基于玩家状态的“情绪”。然后,我从数组中提取歌曲的源URL,如果选择的歌曲尚未播放,则加载它,然后播放它。play函数如下所示(它是对象文字的一部分): 例如,如果我们处理的是(并且只有)“英雄”类别(即情绪),G.audio.playlist如下所示: heroic: [ [ "Song Title", "Artist",
元素和一些JavaScript,我试图创建一个播放列表,从对象(将是一个数组)中选择一个随机键。选择的对象基于玩家状态的“情绪”。然后,我从数组中提取歌曲的源URL,如果选择的歌曲尚未播放,则加载它,然后播放它。play
函数如下所示(它是对象文字的一部分):
例如,如果我们处理的是(并且只有)“英雄”类别(即情绪),G.audio.playlist
如下所示:
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]
)和第三个键([2]
)?尝试将numRums设置为所需的最大值。我看不到有意义的偏见,每次运行它的结果都不一样。百分比显示是预期平均值的百分比。我发现,如果运行次数足够多,变化率约为0.01%
而且,这里有一个例子,您可以在上面运行任意多个迭代,而不会让浏览器对运行脚本的长度感到不满意。如果您愿意,您实际上可以运行1亿次迭代。这是我在三个存储桶上运行10亿次迭代得到的结果:
Number of Cycles Executed: 1,000,000,000
333,317,410 (-0.004777%)
333,330,202 (-0.000939%)
333,352,388 (+0.005716%)
你确定有偏见吗?生成随机数的代码看起来很好。。。
Number of Cycles Executed: 1,000,000,000
333,317,410 (-0.004777%)
333,330,202 (-0.000939%)
333,352,388 (+0.005716%)