Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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 仅使用一个函数Rand100()的1-20随机数组_Javascript_Algorithm - Fatal编程技术网

Javascript 仅使用一个函数Rand100()的1-20随机数组

Javascript 仅使用一个函数Rand100()的1-20随机数组,javascript,algorithm,Javascript,Algorithm,我必须得到一个1-20号的数组,没有按随机顺序排列的重复。我只能使用一个函数Rand100(),它给出一个介于1-100之间的随机数?如果可能,请用javascript回答。这应该给你一个起点。我用Math.random代替Rand100——但它们应该会产生类似的结果。 array_to_randomize是包含要随机化的元素的数组。 随机包含随机化的结果 /* Array to Randomize */ var array_to_randomize = ["a","b","c","d"

我必须得到一个1-20号的数组,没有按随机顺序排列的重复。我只能使用一个函数Rand100(),它给出一个介于1-100之间的随机数?如果可能,请用javascript回答。

这应该给你一个起点。我用Math.random代替Rand100——但它们应该会产生类似的结果。 array_to_randomize是包含要随机化的元素的数组。
随机包含随机化的结果

    /* Array to Randomize */
var array_to_randomize = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t"]
/* Results */
var random = [];

var j = 0, 
        i = array_to_randomize.length;

while (i > 0){
    j = Math.random() * array_to_randomize.length;
    random.push(array_to_randomize.splice(j,1))
    i = array_to_randomize.length;

}

random.forEach(function(value,index){console.log("index: " +  index + " value: " + value)})

除非Rand100本身保证不会重复,否则如果不冒“重试”的风险,就无法做到这一点。在不知道你是如何解决这个奇怪问题的情况下,我能给你的唯一代码是for(var I=0;I<20;++I){array[I]=Rand100()/5;}大家都很欣赏我在这里引用的尽可能多的解决方案,因为我不擅长算法,我希望看到每个解决方案的逻辑。规则:1。不能使用任何其他函数生成随机数。2.您必须保持运行时间不变。@Ixrec请查看答案。两种解决方案都是正确的
var sampleArray = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
var arrayTemp = [];
for (var i = 20;i>=0;i--){
   var temp = Rand100()%i;
   arrayTemp.push(sampleArray[temp]);
   sampleArray.splice(temp,1);
};
console.log(arrayTemp);