我觉得这是一个简单的概念,但我在包含性和排他性方面遇到了麻烦:特别是关于随机数生成器。
例如,如果我想要一个2-8 (包括2和8)的值,那就包含在内了,对吗?
这段代码会是什么样子呢?例如: nextInt(8 - 2) + 2;?
发布于 2016-04-03 04:31:43
例如,如果我想要一个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;发布于 2016-04-03 04:31:25
包含表示它包含数字。排他性意味着它不会。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和limit之间的值,因此.nextInt(7) + 2将给出一个介于0(含)和7(不含,即6)之间的随机数。加法+2将介于2和8之间(包括两者),因为它将介于(0 + 2)和(6 + 2)之间。
https://stackoverflow.com/questions/36378316
复制相似问题