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