Actionscript-3 random numbers between max and min

≡放荡痞女 提交于 2019-12-22 05:05:20

问题


I'm generating a random number between min and max with this code:

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

And it works. However, the random numbers are very little usually between "1 or 3" even if the max is 80.

How can I better distribute the random numbers over all range ?

thanks


回答1:


I am very sure that the code you posted, return min + (max - min) * Math.random(); , should return an evenly distributed random number between min (inclusive) and max (exclusive). There is no reason why it would return between 1 and 3.. Did you try tracing min and max to make sure that they are the numbers you think they are?




回答2:


Math.Random()


Math.random() returns a random number between the values of 0.0 and 1.0. To generate a random integer between 1 and MAX (which i assume U want), Try this:

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

For More on Math.Random() refer:

Official Actionscript Documentaion

  • To generate a random integer between MIN and MAX, Try this:
    MIN + Math.round(Math.random()*(MAX-MIN));

  • To generate a random decimal (floating-pt number) between MIN and MAX, Try this:
    MIN + Math.random()*(MAX-MIN));




回答3:


Try this:

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);
}

I am getting fairly even distributions between 0 and 9 at least.




回答4:


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

400 = max
110 = min



回答5:


try this.

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


来源:https://stackoverflow.com/questions/2662219/actionscript-3-random-numbers-between-max-and-min

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!