以给定的速率在两个事件之间切换

时间:2014-03-09 15:06:43

标签: javascript

我想在这两个.js文件之间切换:

<script type="text/javascript">
<!--
var jsfiles = ['/js/green.js', '/js/blue.js'];

var randomLink = Math.floor(Math.random() * jsfiles.length);

document.getElementById('scriptid').src = jsfiles[randomLink];
//-->
</script>
<script src="" id="scriptid"></script>

如何让green.js在98%的时间内出现,blue.js出现在另外2%的时间?

3 个答案:

答案 0 :(得分:1)

好吧,你可以尝试一下看起来像是98%的东西,如果实际百分比并不重要你可以试试

var jsfiles = ['/js/green.js', '/js/blue.js'];

var randumNum = Math.floor(Math.random() * 100);

if(randomNum > 90)
    document.getElementById('scriptid').src = '/js/blue.js';
 else
    document.getElementById('scriptid').src = '/js/green.js';

这不是一个非常好的解决方案,因为它实际上不会是98%,随机行为的方式不同而且不准确,但如果你只有2个文件并且实际百分比无关紧要,这可以工作。

我设置了> 90因为我认为如果你继续使用98,这将是99%,但这不是一个事实我不确定JS中的随机化是如何工作的,你的电话。

答案 1 :(得分:1)

这样简单的事情怎么样?那将一直给出98%/ 2%。

var jsfiles = ['/js/green.js', '/js/blue.js'],
    secondFileCount = 0,
    count = 0,
    rndFiles = [],
    num;

while (count < 100) {
    num = Math.floor(Math.random() * 2);

    if (num !== 1 || secondFileCount++ <= 2)
        count = rndFiles.push(jsfiles[num]);
}

console.log(rndFiles);

DEMO

答案 2 :(得分:0)

这个怎么样?

if ((~~(Math.random()*100))<=98) alert('in the 98 zone'); else alert('in the 2 zone')