有没有办法预测下一个随机数?

时间:2017-03-22 15:51:51

标签: string function actionscript-3 flash

我想在ActionScript3中制作轮盘赌。

我有其他轮盘赌的完整来源,但它在旋转后生成下一个数字(Eventclick),所以我知道下一个数字,因为我点击旋转按钮(在球停止旋转之前,值变化比视觉快,我知道它在哪里落下) 。

在我的轮盘赌中,我想在玩家点击旋转按钮之前知道下一个号码是什么。对不起,如果我无法解释我想要的内容,但希望你能理解。

package de.polygonal.core.math.random {

    public class Random extends Object
    {

        public function Random() : void
        {
            return;
        }// end function

        public static function rand() : int
        {
            return Math.random() * 2147483647;
        }// end function

        public static function randRange(param1:int, param2:int) : int
        {
            var _loc_3:* = param1 - 0.4999;
            var _loc_4:* = param2 + 0.4999;
            return _loc_3 + (_loc_4 - _loc_3) * Math.random() + 16384.5 - 16384;
        }// end function

        public static function randSym(param1:int) : Number
        {
            var _loc_2:* = -param1 - 0.4999;
            var _loc_3:* = param1 + 0.4999;
            return _loc_2 + (_loc_3 - _loc_2) * Math.random() + 16384.5 - 16384;
        }// end function

        public static function randBool() : Boolean
        {
            return Math.random() < 0.5;
        }// end function

        public static function frand() : Number
        {
            return Math.random();
        }// end function

        public static function frandRange(param1:Number, param2:Number) : Number
        {
            return param1 + (param2 - param1) * Math.random();
        }// end function

        public static function frandSym(param1:Number) : Number
        {
            var _loc_2:* = -param1;
            return _loc_2 + (param1 - _loc_2) * Math.random();
        }// end function

    }
}

1 个答案:

答案 0 :(得分:0)

正如评论所暗示的那样。您所需要的只是前面生成的随机数队列。

package
{
    public class Predictable
    {
        static public const FORESIGHT:int = 10;

        static public var nextRandoms:Array = preFill();

        static public function preFill():Array
        {
            if (!nextRandoms) nextRandoms = new Array;

            while (nextRandoms.length < FORESIGHT)
                nextRandoms.push(Math.random());

            return nextRandoms;
        }

        static public function random():Number
        {
            preFill();

            return nextRandoms.shift();
        }
    }
}

用法:

// Learn the next random number.
var a:Number = Predictable.nextRandoms[0];

// Generate next random number.
var b:Number = Predictable.random();