我需要使用字母A-G和数字5-9生成~6个随机字符。可以使用Math.random
完成吗?他们不必每次都是独一无二的。我发现了这个:
Math.floor(0|Math.random()*9e6).toString(36)
它确实运行良好,但我可以修改它以使其使用某些字符(类似replace(/[^a-z]+/g, '')
但更具体的方式)而不添加arrays
等?
编辑:第五个人的答案在哪里?
答案 0 :(得分:2)
您可以使用不同的功能,包括所需范围内的字母和数字的不同因素和偏移。
function getRandomLetter() { // A B C D E F G
return Math.floor(Math.random() * 7 + 10).toString(36).toUpperCase();
// ^ count of wanted letters
// ^^ offset for the first letter, to get A
// with a random result of zero
}
function getRandomNumber() { // 5 6 7 8 9
return Math.floor(Math.random() * 5 + 5).toString(36);
// ^ 9 - 5 + 1 or count, as factor
// ^ offset
}
console.log(getRandomLetter());
console.log(getRandomNumber());
答案 1 :(得分:1)
你可以完全使用Math从数组中挑选随机元素(在这种情况下是构造随机Id代码的字符)并将它们连接到代码字符串中
步骤:代码:
const array = ["A", "B", "C", "D", "E", "F", "G", "5", "6", "7", "8", "9"];
let codeString = "";
for(i=0 ; i<6 ; i++){
const randomIndex = Math.floor(Math.random()* array.length);
codeString = codeString + array[randomIndex];
}
console.log(codeString);
答案 2 :(得分:0)
如果出现随机字符的模式并不重要,那么我会做这样的事情
// This function helps us generate a random number between two numbers.
function random(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
// The characters we need
var characterArray = ["A", "B", "C", "D", "E", "F", "G", 1, 2, 3, 4, 5, 6, 7, 8, 9];
// Now run a loop six times, get a random number between 0 and the length of the characterArray and concatenate it into a new variable
var randomString = "";
for ( var i = 0; i < 6; i++) {
randomString += characterArray[ random(0, characterArray.length - 1) ];
}
console.log( randomString );
代码可以进一步缩短,例如,而不是实际制作一个字符数组,我们可以分配一个字符串characterArray = "ABCDE...7,8,9"
作为一个字符串也是一个字符数组,并为此目的服务,但我认为它以一种不言自明的方式编写它是一个好主意,您可以根据自己的喜好理解和添加或更改代码中的任何内容。
使用一个函数给我们两个数字之间的随机数,我们可以使用一个数组,其中包含我们的结果可以拥有的所有字符。然后,由于我们想要获得一个包含6个不同字符的随机数,我们使用for loop
,运行它六次,每次从字符数组中获取一个随机元素,并完成工作。