Actionscript-3 max和min之间的随机数

时间:2010-04-18 12:31:09

标签: actionscript-3 math random

我使用以下代码在min和max之间生成一个随机数:

return min + (max - min) * Math.random();

它有效。但是,即使最大值为80,随机数通常也很少在“1或3”之间。

如何更好地在所有范围内分发随机数?

感谢

5 个答案:

答案 0 :(得分:7)

我非常确定您发布的代码return min + (max - min) * Math.random(); 应该在min(包含)和max(不包括)之间返回均匀分布的随机数。它没有理由在1到3之间返回。你是否尝试追踪最小值和最大值以确保它们是你认为的数字?

答案 1 :(得分:2)

的Math.random()


Math.random()会在 0.0 1.0 之间返回一个随机数。要生成1到MAX之间的随机整数(我假设你想要),试试这个:

Math.ceil(Math.random()*MAX);
  

有关Math.Random()的更多信息,请参阅:

     

Official Actionscript Documentaion

  • 要生成MIN和MAX之间的随机整数,请尝试以下操作:
    MIN + Math.round(Math.random()*(MAX-MIN));

  • 要在MIN和MAX之间生成随机小数(浮点数),请尝试以下方法:
    MIN + Math.random()*(MAX-MIN));

答案 2 :(得分:1)

试试这个:

package util
{
public class RandomNumberHelper
{
    public static function randomIntRange(start:Number, end:Number):int
    {
        return int(randomNumberRange(start, end));
    }

    public static function randomNumberRange(start:Number, end:Number):Number
    {
        end++;
        return Math.floor(start + (Math.random() * (end - start)));
    }
}
}

...

protected function testRandomIntsInRange(start:int, end:int):void
{
    var randomIntsAssigned:Object = {};
    var randomInt:int = 0;
    for (var i:int = 0; i < 10000; i++)
    {
        randomInt = RandomNumberHelper.randomIntRange(start, end);

        if (!randomIntsAssigned.hasOwnProperty(randomInt))
            randomIntsAssigned[randomInt] = 0;

        randomIntsAssigned[randomInt]++;
    }
    trace(randomIntsAssigned);
}

我至少在0到9之间得到相当均匀的分布。

答案 3 :(得分:0)

number = (400 - (Math.floor(Math.random()*110)));

400 = max
110 = min

答案 4 :(得分:0)

试试这个。

function randomRange(minNum:Number, maxNum:Number):Number 
{
    return (Math.floor(Math.random() * (maxNum - minNum + 1)) + minNum);
}