【问题标题】:Replacing math.random() with array in AS3用 AS3 中的数组替换 math.random()
【发布时间】:2013-12-11 15:24:23
【问题描述】:

一个非常快速的问题。我正在使用一些不允许 math.random() 的 Google 网络 Flash 横幅。有什么方法可以用模拟随机性的自定义数组替换它,例如

var MyArray:Array = [3,6,4,3,6,7,4,6​​,3,3,5]。

基本上我只需要知道如何在如下语句中用数组中的数字替换 math.random。如果按顺序拉数字是没有问题的。

function myFunction():void {
    myVariable = myVariableTwo + Math.random()*myVariableThree;
}

我是否需要遍历数组并提取数字,如果需要,该怎么做?

我仍然在 AS3 中摸索,所以不要害怕像在对孩子说话一样解释它。

任何帮助将不胜感激。

【问题讨论】:

  • 使用手动添加的数字创建一个数组,例如 [2,4,9,0,8,4,3,4,1,1,1,0]。您应该事先知道需要该数组中的数字多少次。然后,如果您需要一个数字,请调用 myArray.shift()。这将为您提供数组的第一个孩子,同时也将其从数组中删除。所以在你的示例数组的第一次运行中,在 shift() 之后,我们将有 [4,9,0,8...等]。您还可以存储从数组中转移的值,使用它,然后使用 myArray.push(some value) 再次将其放在数组的顶部
  • @DodgerThud 非常感谢您的关注和帮助解决问题!

标签: arrays actionscript-3 flash math random


【解决方案1】:

您可以实现 random seed algorithm 以在不使用 Math.random 的情况下从函数调用中产生类似随机的行为,但是由于他们不喜欢您使用 Math.random 他们可能不喜欢您本质上以不同的方式模拟它的行为表格。

另一种方法是只使用一个固定的结果数组,并附带一个函数,该函数返回数组的第一个元素并推回最后以供重用:

package Rnd
{
    public class Rnd
    {
        private static var VALUES:Array = [ 1, 5, 4, 5, 3, 8, 3, 2, 1, 1, 6, 9 ];

        public static function getValue():uint
        {
            var val:uint = Rnd.VALUES.shift();
            Rnd.VALUES.push(val);
            return val;
        }
    }
}

【讨论】:

  • 就在现场!非常感谢!
猜你喜欢
  • 2013-02-25
  • 1970-01-01
  • 2014-08-02
  • 1970-01-01
  • 1970-01-01
  • 2010-12-03
  • 1970-01-01
  • 2011-04-18
相关资源
最近更新 更多