隨機 概率 選中 演算法實現

2021-06-19 19:03:39 字數 959 閱讀 9664

因為最近專案中要完成,判斷一件事情依照指定概率,隨機的是否能被抽中?這樣就是乙個簡單的隨機演算法實現。

說個簡單的例子,比如:

乙個常見的場景,在遊戲中打乙個怪物,10%機率出現miss,那麼這次攻擊是命中還是miss呢?我們可以用隨機數來實現,miss的範圍是[1,10],命中的範圍是[11,100],然後我們取乙個隨機數,比如60就是命中了,如果不幸取到8就是miss了。只要測試的次數足夠多,那麼miss的比例將會趨向於10%。

再比如說,很多**上面的轉盤**的例子,比如乙個大圓盤,按照面積來劃分,10%的區域是一等獎,20%是二等獎,30%是三等獎,40%是未中獎,那麼你現在準備轉一次,請問,這次我到底該中几等獎還是不中獎?這個過程是用演算法怎麼實現的?

很簡單,利用隨機數來實現。

比如a概率為10%,b概率為20%,c概率為30%,d概率為40%,那麼他們的概率值範圍分別是: 

a[1,10] 

b[11,30] 

c[31,60] 

d[61,100] 

然後取乙個[1,100]的隨機數,落到誰的範圍誰就是選中了。 

這個就是最基本,最簡單的過程了,現在看下面的實現:

public class test   

// 從1開始

integer rand = new random().nextint(sum) + 1;

for (map.entryentry : keychancemap.entryset())

} return null;

} }

當然,你也可以寫個測試類,來看看,不過,你會發現,落在每個區間內的數值量剛好和比例是一致的,尤其是在數量比較大的時候,更明顯。

在這裡用到了hashmap,其實map和數值有點像,都是乙個key對乙個value,只不過數值下標是固定的0,1,2,3.。。而map比較靈活。感覺這種演算法比較有意思。記錄一下。

隨機演算法 概率演算法

div出現在頁面的隨機位置var sheight jquery document.body outerheight true 100 var swidth jquery document.body outerwidth true 100 var div top getrandomnum 0,shei...

概率 隨機數演算法

int generate01 int func else if num1 0 num2 1 return ret int generaterandomnum int max int bit num 0,i 0 int result 0 while 0x01 bit num max bit num w...

概率分析和隨機演算法

一 隨機分析 考慮乙個僱傭問題,面試n個人,在面試的過程中,只要更為優秀的人出現,就僱傭更為優秀的人,但是更換人選需要花費一筆費用c,現在估算這筆費用。這個問題相當於維護乙個當前的 獲勝者 最壞的情形當然是替換n次,那麼費用就會是cn.隨機的情況 第i個人比前i 1個人更為優秀的概率為1 i,那麼期...