在p5.js中生成一个随机整数

4

如何使用p5.js中的random()函数获取随机整数?

例如以下代码:

var num = random(0, 1);
console.log(num);

将十进制数输出到控制台。

如何获得随机整数?

4个回答

10
如果您想要包括0到10之间的整数:

function setup() {
  var num = int(random(0, 11));
  print(num);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.6.0/p5.js"></script>

解释:

random(0, 11) 返回从0到10.999999999...的数字,但永远不会返回11。

int() 将这些小数转换为整数

int(random(0, 11)) 返回0到10之间的数字,包括0和10。


这是使用P5.js的正确方法。+1,但如果您能解释为什么这样做是有效的,那将非常棒。 - Kevin Workman
Kevin,"random(a,b)" 给你在 a 和接近 b 之间的数字,但从不是 b,因此 random(0,11) 返回从 0 开始到 10.999999 的数字(但不包括 11),然后你将数字转换为 int() ..... 因此 int(random(0,11)) 将返回介于 0 和 10 之间的整数。 - Relajadito

0

p5.js中的random()函数总是返回一个浮点数(即小数)。如果你想要一个整数,可以使用JavaScript 的Math.round()将其四舍五入到最接近的整数。

要获取0或1,最好的方法是:

Math.round(random());

你也可以使用int()将JavaScript中的数字转换为整数,但它有一个主要问题,即简单地忽略小数部分,实际上将数字四舍五入到下一个整数。

这是p5.js random()的一个问题,因为random()将返回从最小值到但不包括最大值的随机数。 random(0, 1)的最大值是0.99999...,而int()总是将其转换为0;

这意味着例如:

  • random()永远不会返回1。意味着int(random())始终返回0
  • random(0, 15)永远不会返回15。意味着int(random(15))永远不会返回15

我见过的大多数随机数生成器都不包括结尾。当从数组中选择随机元素以及大多数其他应用程序时,这是很自然的。我会避免使用 round() - ggorlen

0

为什么不像这里演示的那样使用简单的JavaScript呢?

排除最大值:

function getRndInteger(min, max) {
    return Math.floor(random(min, max)) + min;
}

包括限制:
function getRndInteger(min, max) {
    return Math.floor(random(min + 1, max)) + min;
}

2
我本来也要发(几乎)同样的内容。他指的是p5函数random,但应该可以正常工作。只需用random(min, max)替换Math.random() * (max - min)即可。 - SourceOverflow
小问题,但是p5也提供了一个“floor”函数,所以您不需要使用“Math.floor”。更严重的是,在结尾处的“+ min”看起来不对。您已经在调用“random()”时得到了它。 - ggorlen

-1
所以,我会这样做,将一个向下取整的随机数分配给一个变量。
例如:
var r = Math.floor(random(0,11));
console.log(r);

-Valkyrie


2
欢迎来到stackoverflow。即使它确实做了我们想要的事情,但floor函数并不会四舍五入。Math.floor()函数返回小于或等于给定数字的最大整数。还需要注意的是,为了使用p5.js的随机方法,我们还需要定义function setup(){},因为p5.js方法在setup()内部或之后才可用。我们也可以使用p5.js floor代替Math.floor,这样可能看起来更好一些。 - Charlie Wallace
谢谢!哦,好的,哈哈...在谈论我不是特别熟悉的事情时,我要更加小心。 :-) 谢谢! - Valkyrie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接