【问题标题】:Trying to setup a Simple Addition Sequence using Random Generator尝试使用随机生成器设置简单的加法序列
【发布时间】:2011-10-24 23:52:10
【问题描述】:

我正在尝试使用随机生成器设置一个简单的加法序列。该数字必须是一个整数。 这是我要完成的一个示例:

(4, 10, 16, 22, 28, ?) :用户必须输入序列中的下一个数字。 (它是 34,因为每个数字相隔 6 个数字。)

生成器为用户提供随机数,但相邻的 2 个数字的距离必须与接下来的两个数字的距离值相同。例如:10-4 = 6、16-10 = 6、22-16 = 6。

private static void simpleAdditionSequence() {
    int num1, num2, num3, num4, num5, numUser;
    Random generator = new Random();

    num1 = generator.nextInt(2147483647);
    System.out.println(num1);
}

我遇到的问题是弄清楚如何创建 num2.如果我只使用另一个生成器,它可能小于 num1,并且它的距离需要与其余数字具有相同的值。

(注意 - 我使用了 2147483647,所以我可以生成随机整数。

【问题讨论】:

  • 根据经验,关于 SO 的问题不会在标题中标记为“[已解决]”,但您应该接受最佳答案。
  • @MJ93: 两个小问题...在 Java 中编写 Integer.MAX_VALUE 比编写 "2147483647"。然后,如果您真的坚持使用 nextInt(Integer.MAX_VALUE) 来选择您的步骤,那么您将希望实际使用 long 来解决您的问题,因为使用 的解决方案当步长很大时 int 会中断(使用 int 你会很快“结束”并处理负值)。
  • 谢谢,我知道我不必使用任何整数值,我可以将其设置为一个限制,例如:100。但很高兴知道。

标签: java random


【解决方案1】:

您的问题中只有两个数字实际上是随机的——第一个数字和数字之间的差。

生成两个随机整数;一个为基础,一个为步骤,满足。

(需要注意的一件事——你应该只在你的程序中创建 one random-number-generator。每次需要随机数时重复使用该生成器。如果你创建一个每次你需要一个随机数时,新的生成器都不会具有你想要的随机性。)

【讨论】:

  • 谢谢我在你发帖之前就想通了。就像你说的,我的第一个数字和它们之间的差异是唯一的随机数。我可以将我的第一个数字添加到差异中,依此类推。
【解决方案2】:

首先,nextInt() 只返回 int 数据类型。

其次,如果这是您最终生成的模式,那么您只需要生成第一个数字,然后生成它与第二个数字之间的差,然后您就可以自己计算剩余的数字。使用您的示例:

num1 = generator.nextInt(2147483647); 将数字 4 存储在变量 num1 中。然后你生成一个随机增量值,假设你再次调用nextInt() 方法,你得到6 存储在你的increment 变量中。那么:

num2 = num1 + increment; // 4 + 6 = 10
num3 = num2 + increment; // 10 + 6 = 16
// Etc...

【讨论】:

    猜你喜欢
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    相关资源
    最近更新 更多