包容与排他的区别?

时间:2016-04-02 20:26:06

标签: java

我觉得这是一个简单的概念,但我遇到了包容性和排他性问题:特别是关于随机数生成器。

例如,如果我想要一个2-8(包括2和8)的值,那将是包容性的,对吗?

该代码看起来如何? 像这样的东西: nextInt(8 - 2)+ 2; ?

2 个答案:

答案 0 :(得分:4)

包含意味着它包括号码。独家意味着它没有。 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)之间。

答案 1 :(得分:3)

  

例如,如果我想要一个2-8(包括2和8)的值,那将是包容性的,对吗?

即可。包容性包括;独家排除。

范围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;