用于生成类似数字的Javascript函数

时间:2011-12-01 22:08:07

标签: javascript random

给定一个浮点数,帮我写一个函数,生成一个修改过的小数位数百分之一的数字。

例如:

4.32 => 4.38
5.10 => 5.11
8.37 => 8.31

以下是以下

4.32 => 4.29
9.99 => 10.00

6 个答案:

答案 0 :(得分:3)

试试这个:

function simNumber(num) {
    return Math.floor((Math.floor(num * 10) + Math.random()) * 10) / 100;
}

答案 1 :(得分:2)

更新:

http://jsfiddle.net/RHy5d/1/

var num = 3.21;

var newNum = (Math.floor(num*10) + Math.random())/10;

var newNumRounded = Math.floor(newNum*100)/100;

答案 2 :(得分:2)

function similar(num) {
    var result = num;
    while (result == num) {
        result = parseFloat(
            num.toFixed(2).substring(0,3) + 
            Math.random().toString().substr(2,1)
        );
    }
    return result;
}

JSFiddle:http://jsfiddle.net/n3dst4/8KLFa/

答案 3 :(得分:1)

此函数用随机数字[0,9]替换百分位数字,然后在选择相同数字的情况下进行拒绝抽样。应该可以正常工作:

function randomHundredths(x) {
  var r, y;
  do {
    r = Math.floor(Math.random() * 10); // [0, 9]
    y = Number(x.toFixed(2).replace(/\d$/, r));
  } while (y == x);
  return y;
}

答案 4 :(得分:0)

这有效:

function simNumber(num) {
    return parseFloat(num.toString() + Math.random().toString().substr(2,1));
}

演示:http://jsfiddle.net/2QNqw/

答案 5 :(得分:-1)

这应该可以解决问题

function simNumber(num){
    return Math.floor(num) + Math.random()
}

值得注意的是,随机函数不一定会将值返回到小数点后两位。

澄清:Math.random()返回> 0和< 1