Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 闪存As3随机选择的磁盘加上机会/运气_Actionscript 3_Flash_Random - Fatal编程技术网

Actionscript 3 闪存As3随机选择的磁盘加上机会/运气

Actionscript 3 闪存As3随机选择的磁盘加上机会/运气,actionscript-3,flash,random,Actionscript 3,Flash,Random,我的问题是如何在Actionscript3.0中为随机选择的磁盘添加机会。 因此,如果玩家按下“磁盘”按钮,他/她有30%的机会滚动磁盘7,40%的机会滚动磁盘6。我怎样才能拉这个槽 disks.addEventListener(MouseEvent.MOUSE_DOWN, hitDisk); function hitDisk(event:MouseEvent):void{ disks.gotoAndStop(Math.ceil(Math.random()*7)); } 磁盘[mov

我的问题是如何在Actionscript3.0中为随机选择的磁盘添加机会。 因此,如果玩家按下“磁盘”按钮,他/她有30%的机会滚动磁盘7,40%的机会滚动磁盘6。我怎样才能拉这个槽

disks.addEventListener(MouseEvent.MOUSE_DOWN, hitDisk);

function hitDisk(event:MouseEvent):void{
    disks.gotoAndStop(Math.ceil(Math.random()*7));
}
磁盘[movieclip]>有7个关键帧,其中包含磁盘。 最后一帧是特殊磁盘。每个磁盘都有一个实例名。 磁盘[movieclip]>(第1帧)磁盘一、(第2帧)磁盘二、(第3帧)磁盘三……等等

(圆盘与骰子一样,但呈圆形)


一些帮助会很好!!!谢谢

我想你想要这样的东西:

function hitDisk(event:MouseEvent):void{
var rand:int = Math.random() * 100; //gives you a number between 0 and 100
if (rand <= 40) //40% chance
    disks.gotoAndStop(7);
} else if (rand > 40 && rand <= 70) { //30% chance
    disk.gotoAndStop(6);
} else { //30 % chance
    disk.gotoAndStop(5);
}
函数命中磁盘(事件:MouseEvent):无效{
var rand:int=Math.random()*100;//提供一个介于0和100之间的数字

如果(rand 40&&rand如果你搜索“带有偏差的随机数生成器”或“向随机数生成器添加偏差”(沿着这些线),你应该找到方法来做你想做的事情:让随机数“滚动”算法中的某些数比其他数产生更多的特定数

我将在这里做一个假设,圆盘就像一个模具,但有七种可能的结果

这是我在过去处理类似问题时使用的一种基本方法

你提到:

  • 有30%的机会掷骰7
  • 有40%的机会掷骰6次
我将假设1,2,3,4,5在缺失的30%概率中有相等的概率,所以30%除以5对于所有其他数字是6%的概率。所以:

  • 有30%的机会掷骰7
  • 有40%的机会掷骰6次
  • 有6%的机会掷骰5次
  • 有6%的机会掷骰4次
  • 有6%的机会掷骰3次
  • 有6%的几率掷骰2次
  • 有6%的机会掷骰1
因此,给定这些百分比(总计100%),您可以创建一个包含100个空格的数组,并且:

  • 用“1”填充前6个索引
  • 用“2”填充接下来的6个索引
  • 用“3”填充接下来的6个索引
  • 用“4”填充接下来的6个索引
  • 用“5”填充接下来的6个索引
  • 用“6”填充接下来的40个索引
  • 用“7”填充接下来的30个索引
然后使用Math.random()从这个数组中随机选择一个索引。因为从100个“6”中有40个机会被选择,“6”将在40%的时间内出现。其他数字也是如此


仅仅为了这个而使用一个大数组可能是非常浪费的,但是您可以通过一些数学来改进这一点(马上我可以看到数组实际上可以是大小的一半,并且仍然包含所需的百分比,只需将所有值除以2)。或者,您可以利用数字1、2、3、4、5的结果相等的事实,将其分离出来,形成更小的数组(仅用于计算有偏差的结果),以此类推。

请解释这些磁盘是什么,它们有多少。您在写问题时,好像我们已经知道您想用这些磁盘做什么一样“disks”…7个磁盘和骰子一样,但是是圆的,还有6个数字+一个特殊的数字来获得额外的分数。谢谢你的快速回复。但是它给了我一个错误。在这一行上,var rand:int=Math.rand()*40;[通过引用静态类型类调用可能未定义的方法rand.]应该是Math.random()对不起,非常有趣,听起来确实不错。但是我在As3方面没有那么多技能。如果你能写一个例子就好了!