0

My question is how can i add chances to the random selected disks in Actionscript3.0. SO if the player presses the disks button he/she gets 30% chance to roll disk7 and 40% on disk6. How can i pull this trough.

disks.addEventListener(MouseEvent.MOUSE_DOWN, hitDisk);

function hitDisk(event:MouseEvent):void{
    disks.gotoAndStop(Math.ceil(Math.random()*7));
}

Disks[movieclip] > haves 7 keyframes with disks inside of it. The final frame is the special disk. Every disk haves a instance name. Disks[movieclip] > (frame1)diskOne, (frame2)diskTwo, (frame3)diskThree.....and so on.

(disks are just like dices but round shaped)

Some help would be nice!!! Thanks!!!

4

2 回答 2

0

我想你想要这样的东西:

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);
}
于 2013-05-28T09:08:14.857 回答
0

如果您搜索“带有偏差的随机数生成器”或“将偏差添加到随机数生成器”(类似于这些行),您应该找到做您想做的事情的方法:在随机数“滚动”中包含某些数字算法产生的某些数字比其他数字多。

我将在这里假设光盘就像骰子,但有七种可能的结果。

这是我过去用于解决类似问题的一种基本方法。

你提到:

  • 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 个索引</li>
  • 用“2”填充接下来的 6 个索引</li>
  • 用“3”填充接下来的 6 个索引
  • 用“4”填充接下来的 6 个索引</li>
  • 用“5”填充接下来的 6 个索引
  • 用“6”填充接下来的 40 个索引</li>
  • 用“7”填充接下来的 30 个索引</li>

然后使用 Math.random() 从这个数组中随机选择一个索引。由于在 100 次中有 40 次机会选择“6”,因此“6”将出现 40% 的时间。以此类推其他数字。

仅仅为此拥有一个大数组可能会非常浪费,但是您可以通过一些数学来改进它(我马上可以看到数组实际上可以是一半大小并且仍然包含所需的百分比,只需将所有内容除以 2 )。或者,您可以利用数字 1、2、3、4、5 具有相同结果的事实并将其分开,从而产生更小的数组(仅用于计算有偏差的结果),等等。

于 2013-05-28T09:20:26.557 回答