2016-04-02 53 views
0

我覺得這是一個簡單的概念,但我在包容性和排他性方面遇到了問題:特別是關於隨機數生成器。例如,如果我想要一個2-8的值(包括2和8),那麼這是包容的,是正確的嗎?包容性與排他性之間的區別?

該代碼將如何顯示? 類似這樣的: nextInt(8 - 2)+ 2; ?

回答

1

例如,如果我想要一個值2-8(包括2和8),這是包容的,是正確的?

。包容性包括; Exclusive排除。

範圍2-8包含7個唯一值(2,3,4,5,6,7,8);和Random.nextInt(int)不包括指定值。所以你想要類似

Random rand = new Random(); 
int min = 2; 
int max = 8; 
// ... 
int r = rand.nextInt((max - min) + 1) + min; 
2

包含意味着它包含數字。獨家意味着它不。 Random.nextInt(limit)包含0,並且不受限制。這種方法允許使用,例如,陣列中的隨機數的大小:

int[] arr = new int[6]; //size will be 6 
Random rnd = new Random(); 
int i = arr[rnd.nextInt(arr.length)); //will return between [0] and [5] 

爲2和8之間的值,你知道.nextInt(limit)將0和限制之間的回報,所以.nextInt(7) + 2會給一個隨機介於0(含)和7(不含6)之間的數字。加+ 2將在2和8之間(包括兩者),因爲它將介於(0 + 2)和(6 + 2)之間。