2017-07-25 204 views
-4

我想以某種概率選擇5個隨機數。Android - 以某種概率選擇五個隨機數

我的號碼:2-5-6-9-14

probability: 
2 -> %30 
5 -> %20 
6 -> %35 
9 -> %10 
14 -> %5 

我想去新的活動,如果這三個數字都是相同的。

不:最大的三個數字可以是相同的。

我該怎麼辦呢?

+0

(只是計算的(概率至少/精確地)三個五平局與給定的概率產生相同的結果,並使用一個平局? 。)不是:最多三個數字可以是相同的 - 請在問題中說明這意味着什麼(Not/* Note *?!)。 – greybeard

+0

我可以三次選擇相同的號碼,而不是更多。一個例子,我的隨機數應該是2,2,2,6,14,而不是2,2,2,2,14。對不起,我的英文不好。 @greybeard – Johny

+0

如果你只是想以決定是否要'走新activity'與指定概率/ -ies,有什麼用實際辦理個人概率(30,20,35,10,5)/數字(2,5, 6,9,14)? – greybeard

回答

0

你應該嘗試類似的東西(可能是極大的改進)。 這個想法是生成一個0到100之間的數字(代表100%)。 然後你回到你基於概率要的號碼:

public int random() { 
    Random r = new Random(); 
    int n = r.nextInt(100); 

    if (n < 30) // 30% 
     return 2; 
    if (n < (30 + 20)) // 20% (we exclude the 30% above) 
     return 5; 

    if (n < (30 + 20 + 35)) // 35% (we exclude the ones above) 
     return 6; 

    if (n < (30 + 20 + 35 + 10)) // 10% (30 + 20 + 35 are the previous probabilities) 
     return 9; 

    return 14; 
} 
+0

我接受你的答案。如果選擇三個數字相同,我想做點什麼。我怎樣才能做到這一點? – Johny

+0

我們無法爲您編碼您的整個應用程序,您知道... 但是,您可以做的是將每個選定的元素存儲在一個數組中。然後,當選擇第五個元素時,循環考慮數組並計算每個元素出現的次數。如果有人出現3次,你會做一些事情。 – Eselfar

1

簡單的方法:使具有100元素的數組,並把它裏面的2 30項,5項20等,則數組,不是最好的解決辦法,但最簡單的一個上運行您隨意。

+0

如果選擇三個數字相同,我想做點什麼。我怎樣才能做到這一點? – Johny

+0

使3變量保存到每個選擇的值,並在它們之間進行比較, –

+0

(或由GCD除以節省一些空間。) – greybeard

0

最簡單的方法是將不止一次添加所需量擬合選取到一個數組,只是選擇一個隨機指數。你

可能也想看看這個 Random number with Probabilities

+0

如果選擇三個數字相同,我想要做某些事情。我怎樣才能做到這一點? – Johny

+0

A,B,C < - 數字 如果(A == b && b == C){...} – BooNonMooN