Skip to content

JS 随机算法合集

JS 打乱数组算法

js
function randArray(data) {
  // 获取数组长度
  var arrlen = data.length;
  // 创建数组 存放下标数
  var try1 = new Array();
  for (var i = 0; i < arrlen; i++) {
    try1[i] = i;
  }
  // 创建数组 生成随机下标数
  var try2 = new Array();
  for (var i = 0; i < arrlen; i++) {
    try2[i] = try1.splice(Math.floor(Math.random() * try1.length), 1);
  }
  // 创建数组,生成对应随机下标数的数组
  var try3 = new Array();
  for (var i = 0; i < arrlen; i++) {
    try3[i] = data[try2[i]];
  }
  return try3;
}

JS 获取随机颜色

js
/*
 * 获取随机颜色值
 * @param min,最小取值,取值范围 0-255
 * @param max,最大取值,取值范围 0-255
 */
function getColor(min, max) {
  var co = "";
  co += getRandom(min, max) + ",";
  co += getRandom(min, max) + ",";
  co += getRandom(min, max);
  return RGB2Hex(co);
}

/*
 * 获取指定范围随机数
 * @param min,最小取值
 * @param max,最大取值
 */

function getRandom(min, max) {
  //x 上限,y 下限
  var x = max;
  var y = min;
  if (x < y) {
    x = min;
    y = max;
  }
  var rand = parseInt(Math.random() * (x - y + 1) + y);
  return rand;
}

/*
 * 获取颜色值
 * @param rgb, RGB 颜色值,如 "23,189,246"
 */
function RGB2Hex(rgb) {
  var re = rgb.replace(/(?:\(|\)|rgb|RGB)*/g, "").split(","); // 利用正则表达式去掉多余的部分
  var hexColor = "#";
  var hex = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];
  for (var i = 0; i < 3; i++) {
    var r = null;
    var c = re[i];
    var hexAr = [];
    while (c > 16) {
      r = c % 16;
      c = (c / 16) >> 0;
      hexAr.push(hex[r]);
    }
    hexAr.push(hex[c]);
    hexColor += hexAr.reverse().join("");
  }
  return hexColor;
}

JS 获取指定范围的随机数

会 JavaScript 的都知道 Math.random() 返回 0-1 间的一个随机数(包括 0,不包括 1),那么如何获得指定范围内的随机数呢?

js
Math.floor(Math.random() * (max - min + 1) + min);

其中: max - 期望的最大值 min - 期望的最小值

最后编辑时间:

Version 4.2 (core-1.3.4)