2012-03-29 26 views
2
 $(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个随机数。它从第一个数中减去第二个数。Javascript:如何获得第一个随机数始终高于第二个随机数

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

回答

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)); 
+0

在这种情况下,OP必须改变顺序,以使显示的表达正确 – 2012-03-29 10:00:51

+0

@MAKKAM编辑,感谢指出:) – 2012-03-29 10:06:52

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 />"; 
0

要么

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

或只需拨打结果Math.abs()

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; 
} 
0

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

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

0

在减去之前添加更多行:

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