繁体   English   中英

使用Math.random()生成偶数1-4?

[英]Generate even numbers 1-4 using Math.random()?

我想使用Math.random生成数字1-4(整数)。 我仅成功获得了双打或大型双打,而无法弄清楚如何设置最小和最大限制。

Math.random(); =介于0-1之间的两倍?

我见过有人提出这样的建议:num = Math.random()* 60 + 25; 但不知道它做什么或如何工作。

我不确定这是否是一个真正的问题,请随时让我知道是否应该删除它。

编辑:有没有一种方法可以使数字不重复,但是每次运行程序时仍然是随机的?

int rand = (Math.random() * 4) + 1;

Math.Random在这里是多余的,请使用Random类。

Random rand = new Random();
rand.nextInt(4)+1; //starts at 0, so add 1

通过以下方式导入该类:

import java.util.*; import java.util.Random;

数学中的随机数为您提供一个介于零和一之间的十进制数。 您需要告诉它在一定范围内。 类似的东西:(4 * Math.random())+ 1应该给您1-4之间。 如果我错了任何人,请纠正我。

  Random rand = new Random();
  System.out.println(rand.nextInt(4) + 1); // we add 1 because it starts with 0

如果您确实必须使用Math.random ,则需要乘(加)。 这是非常基本的数学运算, Math.random()

返回一个带正号的双精度值,大于或等于0.0且小于1.0。

因此,将其乘以X将得到一个大于或等于0.0且小于X的数字。将其强制转换为int以去除小数,并且如果您只想要偶数,则可以做几件事,最简单的可能是int even = (notSureIfEven >> 1) << 1; [我有点以为“偶数”实际上是“整数”,在这种情况下,您可以忽略它。]然后,如果您不希望范围为0-> X但Y-> X只是将Y添加到结果中(请确保在相乘之前从X减去Y,否则您的范围将为Y-> X + Y)。

要避免两次产生相同的数字,您可以做不同的事情。 一种方法是将您到目前为止生成的所有数字存储在List ,然后在生成新数字时,检查列表contains是否已经contains该数字,如果这样,则生成一个新数字,直到找到不在列表contains数字为止。 (然后,当您确实将其添加到列表中时)。 另一种方法是将它可能生成的所有数字预加载到列表中,然后从该列表中删除随机数。

但这两种方式可能无法很好地扩展到很大范围的数字。 第一个因为可能会很长的循环试图找到一个尚未生成的数字,第二个因为您必须在开始时创建一个很大的列表。 我不确定在很大范围内是否可以做些什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM