无重复随机化功能

No repeat randomizing function

本文关键字:功能 随机化      更新时间:2023-09-26
函数

rnd_act_select() 在代码中进一步随机化四个函数,它由我设置的 Photoshop 中的一个按钮调用,一切正常,但我不知道如何设置随机化,直到所有情况都被执行。有人可以给我解决这个问题的方法吗?谢谢。

function rnd_act_select() {
    // random selection
    NumberOfFunctions = 4;//Number of functions in your switch statement.
    var ran = Math.floor(Math.random() * NumberOfFunctions);
    switch(ran) {
        case 0: func_one(); break;
        case 1: func_two(); break;
        case 2: func_three(); break;
        case 3: func_four(); break;
        default : return;
    }
};


我已经尝试过这种方式,但它不起作用:

function rnd_act_select() {
// random selection begin
function shuffle(array) {
  var currentIndex = array.length, temporaryValue, randomIndex;
  // While there remain elements to shuffle...
  while (0 !== currentIndex) {
    // Pick a remaining element...
    randomIndex = Math.floor(Math.random() * currentIndex);
    currentIndex -= 1;
    // And swap it with the current element.
    temporaryValue = array[currentIndex];
    array[currentIndex] = array[randomIndex];
    array[randomIndex] = temporaryValue;
  }
  return array;
}
var arr = [func_one,func_two,func_three,func_four];
var shuf = shuffle(arr);
switch(shuf) {
    case 0: func_one(); break;
    case 1: func_two(); break;
    case 2: func_three(); break;
    case 3: func_four(); break;
    default : return;
}
// random selection end
};


如果可能的话,请我需要一个明确的答案。谢谢

这应该很容易。为此,您需要记住以前使用过哪些功能。您的算法应如下所示:

  1. 创建一个数组 [0, 1, 2, 3]
  2. 洗牌。
  3. 根据随机顺序运行函数。
  4. 当随机排序的订单为空时,请重复步骤 1。