JavaScript生成不重复的随机数
JavaScript generate random numbers without repeating
我有一些代码,其中包含 x 个项目的数组。在这种情况下,视频,我想随机调用一个视频,但是如果当前调用的视频与随机数相同,我希望它生成另一个随机数,直到它是唯一的。
这是我的代码:
var videoLinks = [
['<iframe id="vid" src="https://www.youtube.com/embed/nYm2G4MnSkY?autoplay=1" frameborder="0" allowfullscreen></iframe>'],
['<iframe id="vid" src="https://www.youtube.com/embed/wAgZVLk6J4M?autoplay=1&start=5&end=45" frameborder="0" allowfullscreen></iframe>'],
['<iframe id="vid" src="https://www.youtube.com/embed/ix9wpslKwBE?autoplay=1" frameborder="0" allowfullscreen></iframe>'],
['<iframe id="vid" src="https://www.youtube.com/embed/OJJ-iLsQOPc?autoplay=1&iv_load_policy=3" frameborder="0" allowfullscreen></iframe>'],
['<iframe id="vid" src="https://www.youtube.com/embed/rore790l_sk?autoplay=1&start=12&end=94" frameborder="0" allowfullscreen></iframe>'],
];
var randomNumber = function () {
var getRandomNumber = Math.floor(Math.random() * 5);
var random = videoLinks[getRandomNumber]
document.getElementById("videoWrapper").innerHTML = random[0];
};
randomNumber(); // To call the function on load
您可以创建一个数组来保存现有生成的数字。
var existingNumbers = [];
var maxNumbers = 5;
var randomNumber = function() {
if (existingNumbers.length != maxNumbers) {
do {
getRandomNumber = Math.floor(Math.random() * maxNumbers);
} while (existingNumbers.indexOf(getRandomNumber) > -1);
existingNumbers.push(getRandomNumber);
var random = videoLinks[getRandomNumber]
document.getElementById("videoWrapper").innerHTML = random[0];
}
};
使用变量检查数字是否相同。
像这样:(使用 LastNumber 来存储 lastNumber)如果它已经被使用,我们会再试一次)
var videoLinks = [
....
];
var lastNumber = 0;
var randomNumber = function () {
var getRandomNumber = Math.floor(Math.random() * 5);
if(getRandomNumber != lastNumber){
var random = videoLinks[getRandomNumber];
document.getElementById("videoWrapper").innerHTML = random[0];
lastNumber = getRandomNumber;
}else{
randomNumber();
}
};
randomNumber(); // To call the function on load
首先,为什么要将所有这些字符串包装在数组中?我将它们放在下面的解决方案中。
无论如何,最简单和最干净的解决方案是克隆数组,并从新数组中删除选定的 URL。
var videoLinks = [
'<iframe id="vid" src="https://www.youtube.com/embed/nYm2G4MnSkY?autoplay=1" frameborder="0" allowfullscreen></iframe>',
'<iframe id="vid" src="https://www.youtube.com/embed/wAgZVLk6J4M?autoplay=1&start=5&end=45" frameborder="0" allowfullscreen></iframe>',
'<iframe id="vid" src="https://www.youtube.com/embed/ix9wpslKwBE?autoplay=1" frameborder="0" allowfullscreen></iframe>',
'<iframe id="vid" src="https://www.youtube.com/embed/OJJ-iLsQOPc?autoplay=1&iv_load_policy=3" frameborder="0" allowfullscreen></iframe>',
'<iframe id="vid" src="https://www.youtube.com/embed/rore790l_sk?autoplay=1&start=12&end=94" frameborder="0" allowfullscreen></iframe>'
];
var temp = videoLinks.slice();
function randomVideo(){
var r = Math.floor(Math.random()*temp.length);
return temp.splice(r, 1);
}
randojs.com 让这变得简单:
var sequence = randoSequence(videoLinks);
然后,您可以遍历 videoLinks 以随机顺序获取值。以下是获取第一个随机值的方法:
sequence[0].value
当您 运行 退出时,如果需要,只需生成一个新序列。
您只需将以下内容添加到您的 html 文档的头部,您就可以轻松地随心所欲地做任何您想做的事情。随机数、数组的随机值、随机 jquery 元素、对象的随机属性,甚至防止重复,如我在此处所示。
<script src="https://randojs.com/1.0.0.js"></script>
我有一些代码,其中包含 x 个项目的数组。在这种情况下,视频,我想随机调用一个视频,但是如果当前调用的视频与随机数相同,我希望它生成另一个随机数,直到它是唯一的。
这是我的代码:
var videoLinks = [
['<iframe id="vid" src="https://www.youtube.com/embed/nYm2G4MnSkY?autoplay=1" frameborder="0" allowfullscreen></iframe>'],
['<iframe id="vid" src="https://www.youtube.com/embed/wAgZVLk6J4M?autoplay=1&start=5&end=45" frameborder="0" allowfullscreen></iframe>'],
['<iframe id="vid" src="https://www.youtube.com/embed/ix9wpslKwBE?autoplay=1" frameborder="0" allowfullscreen></iframe>'],
['<iframe id="vid" src="https://www.youtube.com/embed/OJJ-iLsQOPc?autoplay=1&iv_load_policy=3" frameborder="0" allowfullscreen></iframe>'],
['<iframe id="vid" src="https://www.youtube.com/embed/rore790l_sk?autoplay=1&start=12&end=94" frameborder="0" allowfullscreen></iframe>'],
];
var randomNumber = function () {
var getRandomNumber = Math.floor(Math.random() * 5);
var random = videoLinks[getRandomNumber]
document.getElementById("videoWrapper").innerHTML = random[0];
};
randomNumber(); // To call the function on load
您可以创建一个数组来保存现有生成的数字。
var existingNumbers = [];
var maxNumbers = 5;
var randomNumber = function() {
if (existingNumbers.length != maxNumbers) {
do {
getRandomNumber = Math.floor(Math.random() * maxNumbers);
} while (existingNumbers.indexOf(getRandomNumber) > -1);
existingNumbers.push(getRandomNumber);
var random = videoLinks[getRandomNumber]
document.getElementById("videoWrapper").innerHTML = random[0];
}
};
使用变量检查数字是否相同。
像这样:(使用 LastNumber 来存储 lastNumber)如果它已经被使用,我们会再试一次)
var videoLinks = [
....
];
var lastNumber = 0;
var randomNumber = function () {
var getRandomNumber = Math.floor(Math.random() * 5);
if(getRandomNumber != lastNumber){
var random = videoLinks[getRandomNumber];
document.getElementById("videoWrapper").innerHTML = random[0];
lastNumber = getRandomNumber;
}else{
randomNumber();
}
};
randomNumber(); // To call the function on load
首先,为什么要将所有这些字符串包装在数组中?我将它们放在下面的解决方案中。 无论如何,最简单和最干净的解决方案是克隆数组,并从新数组中删除选定的 URL。
var videoLinks = [
'<iframe id="vid" src="https://www.youtube.com/embed/nYm2G4MnSkY?autoplay=1" frameborder="0" allowfullscreen></iframe>',
'<iframe id="vid" src="https://www.youtube.com/embed/wAgZVLk6J4M?autoplay=1&start=5&end=45" frameborder="0" allowfullscreen></iframe>',
'<iframe id="vid" src="https://www.youtube.com/embed/ix9wpslKwBE?autoplay=1" frameborder="0" allowfullscreen></iframe>',
'<iframe id="vid" src="https://www.youtube.com/embed/OJJ-iLsQOPc?autoplay=1&iv_load_policy=3" frameborder="0" allowfullscreen></iframe>',
'<iframe id="vid" src="https://www.youtube.com/embed/rore790l_sk?autoplay=1&start=12&end=94" frameborder="0" allowfullscreen></iframe>'
];
var temp = videoLinks.slice();
function randomVideo(){
var r = Math.floor(Math.random()*temp.length);
return temp.splice(r, 1);
}
randojs.com 让这变得简单:
var sequence = randoSequence(videoLinks);
然后,您可以遍历 videoLinks 以随机顺序获取值。以下是获取第一个随机值的方法:
sequence[0].value
当您 运行 退出时,如果需要,只需生成一个新序列。
您只需将以下内容添加到您的 html 文档的头部,您就可以轻松地随心所欲地做任何您想做的事情。随机数、数组的随机值、随机 jquery 元素、对象的随机属性,甚至防止重复,如我在此处所示。
<script src="https://randojs.com/1.0.0.js"></script>