actionscript-3 - 设置数组中元素出现的几率

标签 actionscript-3 flash-builder

例如我在一个数组中有 3 个元素:

public function randomTile():Number

{

var tiles:Array = new Array(fire,ice,water);

var index:Number=Math.floor(Math.random()*tiles.length);

return tiles[index];

}

如何设置火(70%)、冰(10%)、水(20%)的发生几率?

最佳答案

这应该适用于任意数量的元素,您可以指定任意机会值。

var tiles:Array = [
  {"item":"fire", "chance":70 },
  {"item":"ice",  "chance":10 },
  {"item":"water","chance":20}
];

var picked:Object = pickRandomByChance(tiles);
trace(picked.item);

public function pickRandomByChance(options:Array):Object
{
  var copy:Array = [];
  var range:Number = 0;
  for (var i:int = 0; i < options.length; i++) 
  {
    copy.push( { "item":options[i].item, "chance":options[i].chance } );
    range += copy[i].chance;
    if (i > 0)
      copy[i].chance += copy[i - 1].chance;
  }

  var pick:Number = Math.floor(Math.random() * range);

  for (i = 0; i < copy.length; i++)
  {
    if (pick <= copy[i].chance)
      return copy[i];
  }
  return null;
}

关于actionscript-3 - 设置数组中元素出现的几率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12114189/

相关文章:

apache-flex - Flex Datagrid 中的键盘导航

actionscript-3 - flex 中的动画 GIF

Flash Builder 4.6 在 Google Chrome 中运行时总是显示空白的 html 页面

actionscript-3 - SSL 在 ActionScript 3 中接受自签名证书

actionscript-3 - ActionScript 函数定义

actionscript-3 - Action : TypeError: Error #1009

iphone - AIR Mobile Live channel DVR URL 不适用于 iPhone,但适用于所有 Android 手机?

java - 具有数据服务状态的 Flex 4 Loader

apache-flex - 闪存生成器 : Loading app to iPhone

actionscript-3 - 为什么不能访问没有 namespace 的xml节点?