Java 生成给定范围内的随机整数,且仅为偶数

Java 生成给定范围内的随机整数,且仅为偶数,java,random,integer,Java,Random,Integer,我在生成这段代码时遇到了麻烦,我确信我只是处于一个程序员的圈子里,因为它似乎应该很容易,但我一辈子都无法得到它 我有一个程序,它需要在一定范围内生成随机数,以表示货币。规定是钱必须在2到200之间,并且只代表偶数美元,只有2美元、4美元、6美元……等等。我在网上做了大量的搜索,这些搜索产生了大量代码来表示java中某个范围内的随机数,但不包括关于偶数的部分 有什么想法吗?如果你想变得聪明,你可以确保没有设置数字的最低有效位: int num = (new Random().nextInt(199

我在生成这段代码时遇到了麻烦,我确信我只是处于一个程序员的圈子里,因为它似乎应该很容易,但我一辈子都无法得到它

我有一个程序,它需要在一定范围内生成随机数,以表示货币。规定是钱必须在2到200之间,并且只代表偶数美元,只有2美元、4美元、6美元……等等。我在网上做了大量的搜索,这些搜索产生了大量代码来表示java中某个范围内的随机数,但不包括关于偶数的部分


有什么想法吗?

如果你想变得聪明,你可以确保没有设置数字的最低有效位:

int num = (new Random().nextInt(199) & ~1) + 2;
这将确保数字始终为偶数

谢谢Eyal Shneider和Omaha


不过,马塞洛在OP中的评论是正确的答案

获取一个介于1-100和2的倍数之间的数字:

int num = (new Random().nextInt(100) + 1) * 2;
int rand=new Random.nextInt(200);
int结果=2;
while(结果

(我会让它递归,但我得去见我的妻子吃晚饭。)

取一个介于1和100之间的随机数,然后乘以2?@Marcelo-或者干脆屏蔽低阶位。(这非常简单。二进制中的偶数与奇数有何不同?@HotLicks或将其除以2,转换为整数,乘以2。这个问题应该因为缺乏基本的理解和努力而结束……不,不会。将任何值与零进行ORing将导致返回相同的值。例如,3 | 0=3。谢谢。应该被修正吗?你可以用-2来代替它。@EyalSchneider这是有道理的…doh。谢谢。@crush:~1实际上更干净:)
int rand = new Random.nextInt(200);
int result = 2;
while(result < rand) {
    result += 2;
}
return result;