Javascript - 多重不等随机数生成器
Javascript - Multiple Unequal Random Number Generator
我正在尝试编写一个在给定范围内生成四个不相等随机数的函数,但该函数当前在 while (selection[i] in selection.slice().splice(i)
行失败。这一行应该检查当前的(第 i
个)值是否被任何其他随机值共享,但目前它似乎什么也没做——也许我错误地使用了 in
?任何帮助将不胜感激。
function contains(a, obj) {
for (var i = 0; i < a.length; i++) {
if (a[i] === obj) {
return true;
}
}
return false;
}
selected=[];
function randomSelection() {
var notselected=[];
for (var i=0; i<25; i++) {
if(!contains(selected, i)) {
notselected.push(i);
}
}
var selection=[notselected[Math.floor(Math.random() * notselected.length)],
notselected[Math.floor(Math.random() * notselected.length)],
notselected[Math.floor(Math.random() * notselected.length)],
notselected[Math.floor(Math.random() * notselected.length)]];
for (var i=0; i<selection.length; i++) {
while (selection[i] in selection.slice().splice(i)) {
alert('Hello!')
selection[i] = notselected[Math.floor(Math.random() * notselected.length)];
}
}
for (var i=0; i<selection.length; i++) {
selected.pop(selection[i]);
}
}
您可以使用以下方法获取两个数字之间的随机值
function getRandomArbitrary(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}
如果值需要是整数可以使用下面的方法:
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min;
}
因此,假设您需要 4 个不同的随机整数值,您可以这样做
var randoms = [];
while(randoms.length < 4) {
var random = getRandomInt(0, 25);
if(randoms.indexOf(random) === -1) {
randoms.push(random);
}
}
随机打乱一组对象(在本例中为数字)
var values = [0,1,2,3,4,5,6];
function shuffle(arr){
var temp = [...arr];
arr.length = 0;
while(temp.length > 0){
arr.push(temp.splice(Math.floor(Math.random() * temp.length),1)[0]);
}
return arr;
}
console.log("pre shuffle : [" + values.join(", ") + "]");
shuffle(values);
console.log("post shuffle : [" + values.join(", ") + "]");
我正在尝试编写一个在给定范围内生成四个不相等随机数的函数,但该函数当前在 while (selection[i] in selection.slice().splice(i)
行失败。这一行应该检查当前的(第 i
个)值是否被任何其他随机值共享,但目前它似乎什么也没做——也许我错误地使用了 in
?任何帮助将不胜感激。
function contains(a, obj) {
for (var i = 0; i < a.length; i++) {
if (a[i] === obj) {
return true;
}
}
return false;
}
selected=[];
function randomSelection() {
var notselected=[];
for (var i=0; i<25; i++) {
if(!contains(selected, i)) {
notselected.push(i);
}
}
var selection=[notselected[Math.floor(Math.random() * notselected.length)],
notselected[Math.floor(Math.random() * notselected.length)],
notselected[Math.floor(Math.random() * notselected.length)],
notselected[Math.floor(Math.random() * notselected.length)]];
for (var i=0; i<selection.length; i++) {
while (selection[i] in selection.slice().splice(i)) {
alert('Hello!')
selection[i] = notselected[Math.floor(Math.random() * notselected.length)];
}
}
for (var i=0; i<selection.length; i++) {
selected.pop(selection[i]);
}
}
您可以使用以下方法获取两个数字之间的随机值
function getRandomArbitrary(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}
如果值需要是整数可以使用下面的方法:
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min;
}
因此,假设您需要 4 个不同的随机整数值,您可以这样做
var randoms = [];
while(randoms.length < 4) {
var random = getRandomInt(0, 25);
if(randoms.indexOf(random) === -1) {
randoms.push(random);
}
}
随机打乱一组对象(在本例中为数字)
var values = [0,1,2,3,4,5,6];
function shuffle(arr){
var temp = [...arr];
arr.length = 0;
while(temp.length > 0){
arr.push(temp.splice(Math.floor(Math.random() * temp.length),1)[0]);
}
return arr;
}
console.log("pre shuffle : [" + values.join(", ") + "]");
shuffle(values);
console.log("post shuffle : [" + values.join(", ") + "]");