p5.js 无法读取数组的随机值

p5.js cannot read random values of arrays

您好!

我试图在 p5.js 中做一些事情,程序在尝试获取数组的随机值时卡住了。这是我制作的一个简单程序来演示:

var arr = [100, 200];
var a;

function setup() {
  createCanvas(400, 400);
  a = random(0, 1);
}

function draw() {
  background(220);
  ellipse(arr[a], 20, 20, 20);
}

程序 returns 一条消息说椭圆函数想要一个数字,但得到了一个变量。如果说 arr[0]arr[1] 有效,但 arr[a].

无效

我正在使用 p5.js 网络编辑器。我不知道为什么会这样。如果您有解决方案,请回复。谢谢!

有一种更简单的方法可以使用 P5.js 获取数组的随机元素。 a = random(arr); 将 return 数组中的随机元素。

根据 documentationrandom() 函数将:

Return a random floating-point number.

这意味着它可能类似于 0.123,这显然 不是 数组索引。

如果你想从数组中随机索引,你应该这样做:

var arr = [100, 200];
var a = Math.round(random(0, arr.length));

这使您能够向源数组添加更多项,而无需调整任何其他代码。然后根据浮点值将其四舍五入为最接近的整数(向上或向下)。

P5.js 随机 returns 随机浮点数。 Documentation

工作演示:

var arr = [100, 200];
var a;

function setup() {
  createCanvas(400, 400);
  a = Math.floor(Math.random()*arr.length)
}

function draw() {
  background(220);
  ellipse(arr[a], 20, 20, 20);
}
<script src="https://cdn.jsdelivr.net/npm/p5@0.10.2/lib/p5.js"></script>