Javascript:如何让第一个随机数始终高于第二个随机数

时间:2012-03-29 09:55:52

标签: javascript function random numbers

        $(function() {  
            var number = document.getElementById("breuken");        

            var i=0;

                for (i=1;i<=10;i++){
                    var fRandom = Math.floor(Math.random()*10);
                    var sRandom = Math.floor(Math.random()*10);

                    var calc = fRandom - sRandom;

                    number.innerHTML += "" + fRandom + " - " + sRandom + " = " + calc + "<br />";
                }       

            number.innerHTML;
        });

基本上,它现在所做的是它在10下显示2个随机数。它从第一个数字中减去第二个数字。

我想要的是第一个数字总是高于第二个数字,所以我不会得到像'-3'这样的答案。

6 个答案:

答案 0 :(得分:2)

只需使用Math.abs()

var calc = Math.abs(fRandom - sRandom);

如果订单很重要,您也可以

                var sRandom = Math.floor(Math.random()*10);

                // lower bound of sRandom, upper bound of (10 - sRandom)
                var fRandom = Math.floor(sRandom + Math.random()*(10-sRandom)); 

答案 1 :(得分:1)

最简单的解决方案是采用绝对值:

var calc = Math.abs(fRandom - sRandom);

但是,由于您还列出了第一个和第二个数字,您可能希望使用最小值和最大值对值进行排序并重新存储它们:

var bigRandom = Math.max(fRandom, sRandom);
var lilRandom = Math.min(fRandom, sRandom);

var calc = bigRandom - lilRandom;

number.innerHTML += "" + bigRandom + " - " + lilRandom + " = " + calc + "<br />";

答案 2 :(得分:0)

无论

var fRandom = Math.floor(5 + Math.random()*5);
var sRandom = Math.floor(Math.random()*5);

或只是在结果上致电Math.abs()

答案 3 :(得分:0)

您可以在[0; fRandom]范围内生成第二个数字:

var fRandom = Math.floor(Math.random()*10);
var sRandom = Math.floor(Math.random()*fRandom);

或只是交换值:

var fRandom = Math.floor(Math.random()*10);
var sRandom = Math.floor(Math.random()*10);
if(sRandom<fRandom) {
    var temp = sRandom;
    sRandom = fRandom;
    fRandom = temp;
}

答案 4 :(得分:0)

如果您需要这样的随机数,请使用

var fRandom = Math.floor(Math.random()*10);
var sRandom = Math.floor(Math.random()*fRandom);

var fRandom = Math.floor(Math.random()*10); var sRandom = Math.floor(Math.random()*fRandom);

答案 5 :(得分:0)

在减去之前添加更多行:

if(fRandom < sRandom)
     fRandom = (sRandom - fRandom ) + Math.floor((Math.random() *10));