2012-05-07 20 views
3

はここに私のコードである少数のために中断します。これは、1〜10または50〜100のような範囲のために正常に動作しますが、私はそうのような少数しようとすると:乱数生成器は、

randomNumber(0.01,0.05,5) 

を私は0.27335と1.04333のような悪い結果が得られます。

+0

なぜ丸められませんか? –

+7

私はこれが 'var num = Math.random(from * from + 1)+ from;'が 'var num = Math.random()*(to-from)+ from; 'でなければならないと思います – Yoshi

答えて

2

あなたの計算には消極的です。 +1なしto-from次のようになります。次のように

var randomNumber = function (from, to, dec) { 
    var num = Math.random() * (to - from +1) + from; 
    var result = Math.round(num * Math.pow(10, dec))/Math.pow(10, dec); 
    return result; 
};

あなたのコードは次のようになります。

var randomNumber = function (from, to, dec) { 
    var num = Math.random() * (to - from) + from; 
    var result = Math.round(num * Math.pow(10, dec))/Math.pow(10, dec); 
    return result; 
}; 

実際に、それはさらに次のようにresult変数を省略することにより短縮することができます。

var randomNumber = function (from, to, dec) { 
    var num = Math.random() * (to - from) + from; //Generate a random float 
    return Math.round(num * Math.pow(10, dec))/Math.pow(10, dec); //Round it to <dec> digits. Return. 
}; 
+0

Works!ありがとうございました。 – mustacheMcGee

1
var randomNumber = function(from,to,dec) 
{ 
    var num = Math.random()*(to-from)+from; 
    var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec); 
    return result; 
}