2013-05-28 46 views
0

我的問題是如何添加機會隨機選擇磁盤在Actionscript3.0。 因此,如果玩家按下磁盤按鈕,他/她有30%的機會在磁盤6上滾動磁盤7和40%。我怎麼能拉這個槽。Flash As3隨機選擇磁盤加機遇/運氣

disks.addEventListener(MouseEvent.MOUSE_DOWN, hitDisk); 

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

磁盤[movieclip]>有7個關鍵幀,其中有磁盤。 最後一幀是特殊的磁盤。每個磁盤都有一個實例名稱。 Disks [movieclip]>(frame1)diskOne,(frame2)diskTwo,(frame3)diskThree .....等等。

(磁盤就像骰子,但圓形)

一些幫助將是很好的!謝謝!!!

+0

請解釋這些磁盤是什麼,其中有多少。你寫下你的問題,就好像我們已經知道你正在試圖用你的「磁盤」一樣...... – Kodiak

+0

7個磁盤,有骰子,但是圓形和6個數字+特殊的加分。 – user1492440

回答

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); 
} 
+0

感謝您的快速回復。但它給了我一個錯誤。在這一行var rand:int = Math.rand()* 40; [調用一個可能未定義的方法rand通過靜態類型的引用。] – user1492440

+0

應該是Math.random()。對不起 –

+0

這工作出感謝:D – user1492440

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位和一個陣列:

  • 填充第一6個索引爲「1」
  • 填充下一個6個索引與「2」
  • 填充下一個6個索引與 '3'
  • 填充下一個6個索引 '4'
  • 填充下一個6個索引與 '5'
  • 填充下一個40個索引與 '6'
  • 用'7'填充下30個索引

然後使用Math.random()從該數組中隨機選擇一個索引。由於'0'被挑選出來的機會有100個,所以'6'將出現40%的時間。和其他數字一樣。

這可能是一個很大的數組只是爲了這個,但你可以用一些數學改善這個(馬上我可以看到數組實際上可以是一半的大小,仍然包含所需的百分比,只是通過除以2)。或者你可以利用數字1,2,3,4,5具有相同結果並將其分開的事實,從而導致更小的數組(僅用於計算偏差結果)等等。

+0

非常intrestring,它聽起來真的很好。但是我沒有那麼多的As3技能。如果你能寫一個例子,這將是很好的! – user1492440