JS中数组元素的随机子集
Random subset of array elements in JS
我正在尝试 select 数组中三个唯一元素的随机集合。我是 JS 的新手,而且我经常被意外的引用行为绊倒(Python 是我最好的语言)。我认为这里也正在发生这种情况。这是P5.JS.
这是我的尝试:
var points = [[0,0],[.5*w,0],[w,0],
[0,.5*h],[.5*w,.5*h],[w,.5*h],
[0,h],[.5*w,h],[w,h]];
var vert = [];
var start = int(random(0,8));
vert.push(points[start].slice());
points.splice(start,1);
var middle = int(random(0,7));
vert.push(points[middle].slice());
points.splice(middle,1);
var end = int(random(0,6));
vert.push(points[end].slice());
当我查看 vert
的内容时,很明显我没有得到预期的元素。特别是,我从来没有得到原始数组中最后三个元素中的任何一个。
如上所述,int()
和 random()
是 p5.js 函数,很好。通过删除 push()
语句中的 .slice()
实例解决了该问题:
var vert = [];
var start = int(random(0,8));
vert.push(points[start]);
points.splice(start,1);
var middle = int(random(0,7));
vert.push(points[middle]);
points.splice(middle,1);
var end = int(random(0,6));
vert.push(points[end]);
我正在尝试 select 数组中三个唯一元素的随机集合。我是 JS 的新手,而且我经常被意外的引用行为绊倒(Python 是我最好的语言)。我认为这里也正在发生这种情况。这是P5.JS.
这是我的尝试:
var points = [[0,0],[.5*w,0],[w,0],
[0,.5*h],[.5*w,.5*h],[w,.5*h],
[0,h],[.5*w,h],[w,h]];
var vert = [];
var start = int(random(0,8));
vert.push(points[start].slice());
points.splice(start,1);
var middle = int(random(0,7));
vert.push(points[middle].slice());
points.splice(middle,1);
var end = int(random(0,6));
vert.push(points[end].slice());
当我查看 vert
的内容时,很明显我没有得到预期的元素。特别是,我从来没有得到原始数组中最后三个元素中的任何一个。
如上所述,int()
和 random()
是 p5.js 函数,很好。通过删除 push()
语句中的 .slice()
实例解决了该问题:
var vert = [];
var start = int(random(0,8));
vert.push(points[start]);
points.splice(start,1);
var middle = int(random(0,7));
vert.push(points[middle]);
points.splice(middle,1);
var end = int(random(0,6));
vert.push(points[end]);