Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 随机选择并对每个选择重复特定次数_Javascript_Arrays_Random_Repeat - Fatal编程技术网

Javascript 随机选择并对每个选择重复特定次数

Javascript 随机选择并对每个选择重复特定次数,javascript,arrays,random,repeat,Javascript,Arrays,Random,Repeat,我想从数组中随机选择一个项目,直到指定了最大重复时间 var array = ["cat", "dog"]; var maxRepeat = 10; 我想把猫和狗各退回10次,这样就可以按随机顺序总共退回20次。 比如: cat cat dog cat dog dog cat cat dog cat dog dog dog cat cat dog cat cat dog dog 你可以用下面的方法来做 函数洗牌(a){ for(设i=a.length;i;i--){ 设j=Math.flo

我想从数组中随机选择一个项目,直到指定了最大重复时间

var array = ["cat", "dog"];
var maxRepeat = 10;
我想把猫和狗各退回10次,这样就可以按随机顺序总共退回20次。 比如:

cat
cat
dog
cat
dog
dog
cat
cat
dog
cat
dog
dog
dog
cat
cat
dog
cat
cat
dog
dog

你可以用下面的方法来做

函数洗牌(a){
for(设i=a.length;i;i--){
设j=Math.floor(Math.random()*i);
[a[i-1],a[j]=[a[j],a[i-1]];
}
}
设arr=[“猫”、“狗”];
设temp=[];
对于(让str的arr){
温度=温度混凝土(阵列(10)填充(str));
}
洗牌(临时);
控制台日志(temp)
var数组=[“猫”、“狗”];
var maxRepeat=10;
var occObj={};
对于(var i=0;i

我使用object来存储特定值显示的次数。

您可以使用simple
进行循环,然后使用push或unshift,两者在每个元素上都有50%的几率

var数组=[“猫”、“狗”];
var maxRepeat=10;
常数随机=函数(arr,n){
变量c=0,r=[],总=n*arr.length;
对于(变量i=0;ivar rand=Math.random()很难确切地知道您要的是什么,但是这里有一个函数,它将返回一个随机的
“cat”
“dog”
(每只动物10次;在所有动物都耗尽后,它将返回
null
):

var数组=[“猫”、“狗”],
maxRepeat=10;
让getRandomAnimal=(()=>{
让totalAnimals=maxRepeat*array.length,
动物=新数组(totalAnimals),
指数=0;
for(设i=0;iMath.floor(Math.random()-0.5));
return()=>{
返回((索引>=totalAnimals)?空:动物[index++];
};
})();
var array = ["cat", "dog"];
var maxRepeat = 10;
var occObj= {};


for(var i = 0; i < array.length * maxRepeat; i++){
    var  occ = array[Math.floor(Math.random() * array.length)];

    if(occObj[occ]){
        if(occObj[occ].count < maxRepeat){
            occObj[occ].count++;
            console.log(occ);
        }else{
            i--; //if the particular value was displayed "maxRepeat" times already, we need to make sure we run the loop again
        }   
    }else{
        occObj[occ] = {}
        occObj[occ].count = 1;
        console.log(occ);
    }
}
var array = ["cat", "dog"],
    maxRepeat = 10;

let getRandomAnimal = (() => {
        let totalAnimals = maxRepeat * array.length,
            animals = new Array(totalAnimals),
            index = 0;

        for (let i = 0; i < totalAnimals; ++i) {
            animals[i] = array[i % array.length];
        }

        animals.sort(() => Math.floor(Math.random() - 0.5));

        return () => {
            return ((index >= totalAnimals) ? null : animals[index++]);
        };
    })();