我生成一个介于0和1之间的随机数。我可能使用了错误的术语,但我想要一种优雅的方法来评估范围。
有没有比以下更好的东西?
if (RandNum < 0.075) { sVal = 'a'; }
else if (RandNum < 0.123) { sVal = 'b'; }
else if (RandNum < 0.199) { sVal = 'c'; }
... etc
答案 0 :(得分:5)
像
这样的东西var RandNum = Math.random(),
letter = null,
obj = {
a : 0.075,
b : 0.123,
c : 0.199,
d : 0.2,
e : 0.4,
f : 0.6,
g : 0.8,
h : 1
}
for (var k in obj) {
if (RandNum < obj[k]) {
letter = k;
break;
}
}
或改为使用两个数组
var RandNum = Math.random(),
letters = 'abcdefgh'.split(''),
range = [
0.075,
0.123,
0.199,
0.2,
0.4,
0.6,
0.8,
1
];
while (RandNum < range.pop());
var letter = letters[range.length];
答案 1 :(得分:-1)
我唯一能想到的是:
switch(true) {
case (RandNum < 0.075):
sVal = 'a';
break;
case (RandNum < 0.123):
sVal = 'b';
break;
...
}
但它实际上只改变了外观,javascript没有为浮点运算设置深入的函数。