在两组值之间生成随机数的最佳方法

时间:2013-05-24 19:21:43

标签: javascript random

我需要生成一个介于-40到-10和10到40之间的随机数。因此结果可能是25,但从不-5或5。

我在网上看过,但解决方案似乎过于复杂。有没有办法只用一两行呢?

6 个答案:

答案 0 :(得分:3)

Math.random()将返回0到1之间的随机数。

创建自己的函数,在最小和最大数字之间创建一个随机数。缩放最小值和最大值之间的随机数,然后用最小值偏移。

function randomBetween(min, max) {
  return Math.random() * (max - min) + min;
}

答案 1 :(得分:1)

生成介于10和40之间的数字,然后生成1或0,如果0将其转换为负1并乘以任一结果 Math.random() * 30 + (Math.random() < 0.5 ? -40 : 10);

答案 2 :(得分:0)

这是62个不同的值,每个子范围有31个,所以:

r = Math.floor(Math.random()*62);
if (r < 31) { r -= 40; } else { r -= 21; }

答案 3 :(得分:0)

var n = Math.random()*62;
return n - (n < 31 ? 40 : 21);

答案 4 :(得分:0)

In [176]:
df.columns[df.isin([0,1]).all()]

Out[176]:
Index(['a'], dtype='object')

以上代码生成15-50之间的随机数

for(int i=15;i<=46;i++)
{
    double random=Math.rand()*5+i; 
    int rand=(int)random;
    System.out.println(rand);

}

这给出了较低的值,即在这种情况下为15

注意:你需要从值的上限中减去4,即如果你使用i <= 50,这将打印最多54,如果你想生成no。 b / w 50-80使用(int i = 50; i <= 76; i ++)

希望这有帮助:)

答案 5 :(得分:-1)

算法是(rand *(max-min))+ min

Math.floor(Math.random()*30)+10

Math.floor(Math.random()*-30)-10