我需要扰乱一个数组

I need to disorder an array

本文关键字:一个 数组      更新时间:2023-09-26

你好,我需要无序数组。我尝试了这样的事情:

var letras = ['a', 'e', 'i', 'o', 'u'];
function disorder(p){
  for(i=0;i<100;i++){
    pos = Math.random()*p.length;
    temp=p[pos];
    p.splice(pos,1);
    p.push(temp);
  }
}

但它不起作用,而且我不确定由于删除而具有内存效率。

你需要

一个整数作为索引。

pos = Math.random() * p.length | 0;

按位或强制转换值为整数。

function disorder(p) {
    var i, pos, temp;
    for (i = 0; i < 100; i++) {
        pos = Math.random() * p.length | 0;
        temp = p[pos];
        p.splice(pos, 1);
        p.push(temp);
    }
}
var letras = ['a', 'e', 'i', 'o', 'u'], p = []
disorder(letras);
document.write('<pre>' + JSON.stringify(letras, 0, 4) + '</pre>');

只是做一个随机排序怎么样?

var letras = ['a', 'e', 'i', 'o', 'u'];
function disorder(arr, entropy){
  var disorderedArr = arr.sort(function(a, b) {
    return Math.floor(Math.random() * entropy); 
  });
  return disorderedArr;
}
var disorderedLetras = disorder(letras, 10);
console.log(disorderedLetras);
document.write('<pre>' + JSON.stringify(disorderedLetras, 0, 4) + '</pre>');

虽然在统计上可能不活跃,但这会做你想做的事,并让你对事情的实际随机程度有一些控制。