java - 生成介于 0 和某个值之间的随机整数,其中一半在集合 (0,5] 中,另一半在 (5,x]

标签 java random numbers

我正在寻找一种从 0-x 生成随机整数的方法,其中 x 由人类用户在运行时定义。但是,这些数字的一半必须大于零且小于或等于 5 (0,5],另一半必须在 [6,x] 的集合中。

我知道下面的代码会从 0-x 生成一个数字。主要问题是确保其中一半在 (0,5]

    Math.random() * x;

我不是在找人为我做这件事,只是在寻找一些提示。谢谢!

最佳答案

您可以先掷一枚硬币,然后根据该硬币生成较大或较小的数字:

final Random rnd = new Random();
while (true)
  System.out.println(rnd.nextBoolean()? rnd.nextInt(6) : 6 + rnd.nextInt(x-5));

或者,使用笨拙的 Math.random()(在范围的边缘肯定会遇到麻烦):

while (true)
  System.out.println(Math.floor(
     math.random() < 0.5 ? (Math.random() * 6) : (6 + (x-5) * Math.random())
  ));

仅将此视为提示:)

关于java - 生成介于 0 和某个值之间的随机整数,其中一半在集合 (0,5] 中,另一半在 (5,x],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12957219/

相关文章:

java - JFace 消息对话框 : inline text coloring

java - GUI 提交按钮不起作用 - Java

javascript - 如何不重复随机函数的结果

assembly - 窦可扩展吗?

java - junit,获取失败的方法名

c - rand() 播种与 time() 问题

javascript - 使用JS生成带有特定符号的随机字符串

regex - Perl 正则表达式用自己替换数字,只是高一个

c++ - 如何计算一个整数的小数位数?

java.io.StreamCorruptedException : invalid stream header: EFBFBDEF