Get random integer in range (x, y]?
Possible Duplicate:
Java: generating random number in a range
如何生成一个随机整数i,使i属于(0,10]?
我试着用这个:
1 2
| Random generator = new Random();
int i = generator. nextInt(10); |
但它给我提供了[0,10)之间的值。
但在我的情况下,我需要他们是(0,10]。
1 2
| Random generator = new Random();
int i = generator. nextInt(10) + 1; |
- 这将生成范围[1,11]内的整数。
- …现在我意识到我们谈论的是整数,是一样的。
- 好吧,添加"1"当然可以解决这个问题,但我就是不明白为什么这个方法不处理两个参数——范围的开始和停止?!
- @传递两个整数的thorinker需要将两个值复制到堆栈中,以便在方法内部使用。此实例中值"1"的唯一用途是基本加法。没有理由为单个操作引入额外的开销,这些操作可以在外部用少于一行代码完成。
- @bindsnipper001它使它更干净,就像isEmpty()方法,在这里你可以只做.size() == 0。
怎么样:
1 2
| Random generator = new Random();
int i = 10 - generator. nextInt(10); |
- 聪明,但有点迟钝。
- +聪明1/2,迟钝1/2。
- 是的,绝对迟钝。我本来想的是实数,但至少它仍然适用于整数!:)
只需在结果中添加一个。将[0,10]转换为(0,10)(对于整数)。[0,10)只是一种更令人困惑的方式来表示[0,9],而(0,10)是[1,10](对于整数)。
- 好吧,添加"1"当然可以解决这个问题,但我就是不明白为什么这个方法不处理两个参数——范围的开始和停止?!