Случайные числа Actionscript-3 между макс. и минута

Я генерирую случайное число между минутой и макс. с этим кодом:

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

И это работает. Однако случайные числа очень мало обычно между "1 или 3", даже если макс. равняется 80.

Как я могу лучше распределить случайные числа по всему диапазону?

спасибо

7
задан jonathanasdf 29 April 2010 в 16:29
поделиться

3 ответа

Я очень уверен, что опубликованный вами код return min + (max - min) * Math.random (); должен возвращать равномерно распределенное случайное число между min (включительно) и max (исключая). Нет причин, по которым он будет возвращаться между 1 и 3 .. Вы пытались отследить min и max, чтобы убедиться, что это те числа, которые вы думаете?

7
ответ дан 7 December 2019 в 01:18
поделиться

Math.Random ()


Math.random () возвращает случайное число между значениями 0,0 и 1,0 . Чтобы сгенерировать случайное целое число от 1 до MAX (которое, я полагаю, нужно для U), попробуйте следующее:

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

Подробнее о Math.Random () см .:

Официальный скрипт действий Documentaion

  • Чтобы сгенерировать случайное целое число от MIN до MAX. Попробуйте следующее:
    MIN + Math.round (Math.random () * (MAX-MIN));

  • Для генерации случайного десятичного числа (числа с плавающей точкой ) между MIN и MAX. Попробуйте следующее:
    MIN + Math.random () * (MAX-MIN));

2
ответ дан 7 December 2019 в 01:18
поделиться

Попробуйте следующее:

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.

1
ответ дан 7 December 2019 в 01:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: