【问题标题】:Generate a random integer within a given range AND is even ONLY [closed]在给定范围内生成一个随机整数,甚至只是 [关闭]
【发布时间】:2013-09-12 20:13:40
【问题描述】:

我在生成此代码时遇到了麻烦,我确定我只是在编码器的块中或其他东西,因为它似乎应该很容易,但我一生都无法获得它。

我有一个程序需要在一定范围内生成随机数来代表金钱。规定是货币需要在 2 到 200 之间,并且仅代表偶数美元,因此 2 美元、4 美元、6 美元……以此类推。我已经在网上进行了广泛的搜索,这些搜索产生了大量代码来表示 Java 中某个范围内的随机数,但不是关于仅偶数的部分。

有什么想法吗?

【问题讨论】:

  • 得到一个 1 到 100 之间的随机数并乘以 2?
  • @Marcelo - 或者只是屏蔽低位。
  • (这非常简单。二进制中的偶数与奇数有何不同??)
  • @HotLicks 或者将其除以 2,转换为 int,然后乘以 2。
  • 这个问题应该被关闭,因为缺乏基本的理解和缺乏努力......

标签: java random integer


【解决方案1】:

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

int num = (new Random().nextInt(199) & ~1) + 2;

这将确保数字始终是偶数。

感谢 Eyal Shneider 和 Omaha


Marcelo 来自 OP 的评论是正确的答案。

获取一个介于 1-100 之间的数字,并乘以 2:

int num = (new Random().nextInt(100) + 1) * 2;

【讨论】:

  • 不,不会的。与零进行或运算将导致返回相同的值。例如,3|0=3。
  • 谢谢。应该修好吗?
  • 你可以用 -2 代替它。
  • @EyalSchneider 这是有道理的……哦。谢谢。
  • @crush: ~1 实际上更干净 IMO :)
【解决方案2】:
int rand = new Random.nextInt(200);
int result = 2;
while(result < rand) {
    result += 2;
}
return result;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-08
    • 2019-10-30
    • 2018-12-17
    • 2010-09-22
    相关资源
    最近更新 更多