我的问题是如何在Actionscript3.0中为随机选择的磁盘添加机会。 因此,如果玩家按下磁盘按钮,他/她有30%的机会滚动disk7和40%的磁盘6。我怎么能拉这个低谷。
disks.addEventListener(MouseEvent.MOUSE_DOWN, hitDisk);
function hitDisk(event:MouseEvent):void{
disks.gotoAndStop(Math.ceil(Math.random()*7));
}
磁盘[movieclip]>有7个关键帧,里面有磁盘。 最后一帧是特殊磁盘。每个磁盘都有一个实例名称。 磁盘[movieclip]> (frame1)diskOne,(frame2)diskTwo,(frame3)diskThree .....等等。
(磁盘就像骰子但圆形)
一些帮助会很好!!!感谢!!!
答案 0 :(得分: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);
}
答案 1 :(得分:0)
如果您搜索“带有偏差的随机数生成器”或“向随机数生成器添加偏差”(沿着这些行),您应该找到想要的方法:在随机数中包含某些数字'滚动'算法比其他算法产生更多的数字。
我将在这里假设光盘就像一个光盘,但有七种可能的结果。
这是我过去用于解决类似问题的一种基本方法。
你提到了:
我将假设1,2,3,4,5在失去的30%几率中有相同的机会,因此30%除以5是所有其他数字的6%几率。所以:
因此,给定这些百分比(总计100%),您可以创建一个包含100个空格的数组,并且:
然后使用Math.random()从该数组中随机选择一个索引。因为'6'中有40个机会被选中,所以'6'将在40%的时间内出现。等等其他数字。
为此设置一个大型数组可能相当浪费,但你可以通过一些数学来改善这一点(我可以看到数组实际上只有一半的大小并且仍然包含所需的百分比,只需要分开一切都由2)。或者你可以利用这样的事实:数字1,2,3,4,5具有相同的结果并将其分开,从而产生更小的数组(仅用于计算偏差结果),等等。