首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JavaScript中有限的一组字符使用Math.random生成随机集

使用JavaScript中有限的一组字符使用Math.random生成随机集
EN

Stack Overflow用户
提问于 2018-02-03 15:57:37
回答 3查看 137关注 0票数 1

我需要用字母A和数字5-9生成~6个随机字符.这能用Math.random来完成吗?它们不一定每次都是独一无二的。我发现了这个:

Math.floor(0|Math.random()*9e6).toString(36)

而且它确实工作得很好,但我可以修改它,使它使用某些字符(类似于replace(/[^a-z]+/g, ''),但以更具体的方式)而不添加arrays等等?

编辑:第五个人的答案在哪里?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-02-03 16:06:08

您可以在想要的范围内使用不同的函数,对字母和数字使用不同的因素和偏移。

代码语言:javascript
复制
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());

票数 2
EN

Stack Overflow用户

发布于 2018-02-03 16:07:55

完全可以使用数学从数组中选择随机元素(在本例中是构建随机Id代码的字符),并将这些字符连接到代码字符串中。

步骤:

  • 首先,使用代码字符串的“构建”块创建一个数组。
  • 然后创建一个空字符串来保存代码字符串。
  • 运行一个循环(次数取决于您希望代码运行的时间)
  • 数学部分:,您需要一个随机索引。要做到这一点,您可以使用Math.random()生成一个随机数,这将在0-1之间给出一些信息。然后将其乘以构建块数组的长度,结果将介于0- array.length之间。然后将其包装在Math.Floor中,以确保从这个过程中获得一个干净的整数,这将是您的随机索引。
  • 然后,您只需将随机字符添加到codeString中,选择arrayrandomIndex并将其连接到codeString。
  • 循环将重复istself,最后您将得到您的codeString。

代码:

代码语言:javascript
复制
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);
票数 1
EN

Stack Overflow用户

发布于 2018-02-03 16:16:08

如果随机字符出现的模式不是很重要,那么我会这样做

代码语言:javascript
复制
// 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,运行它六次,每次它从字符数组中得到一个随机元素,并完成这项工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48599218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档