以间隔生成0到n之间的随机整数

时间:2018-01-05 18:47:13

标签: javascript

我尝试以4为间隔生成0到n之间的随机整数。例如,如果n为10,则它将以4为增量计数,并可能生成0,3或7以任何顺序:7,0,3等。最大间隔将是一个变量。我已经生成了一个随机整数,但不是从0或间隔: Math.floor(Math.random() * 10) + 1;

我已经看到了在某些数字之间生成随机整数的示例,但不是从0或某些时间间隔生成随机整数。提前谢谢!

2 个答案:

答案 0 :(得分:2)

为了做到这一点,没有理由为循环而烦恼。该解决方案仅适用于一些基本算法:

const randomInterval = (min, max, step) => {
  const numberOfSteps = Math.floor((max - min) / step) + 1
  const randomStep = Math.floor(Math.random() * numberOfSteps)
  return min + randomStep * step
}

console.log('0, 4, or 8 =>', randomInterval(0, 10, 4))
console.log('0, 4, 8, or 12 =>', randomInterval(0, 12, 4))
console.log('1-10 =>', randomInterval(1, 10, 1))

答案 1 :(得分:1)

这允许您指定最小值,最大值和步长。它找到符合该类别的所有数字,并从该子集中为您提供随机数。

/**
 * Contact
 *
 * @ORM\Table(name="contact")
 * @ORM\Entity(repositoryClass="ImporterBundle\Repository\ContactRepository")
 * @Serializer\ExclusionPolicy("ALL")
 */
class Contact
{
    /**
     * @var OriginalData
     *
     * @ORM\OneToOne(targetEntity="ImporterBundle\Entity\OriginalData")
     * @Serializer\Exclude()
     */
    private $originalData;