gpt4 book ai didi

javascript - 生成一个随机数字序列,然后在 JavaScript 中向该序列附加一个大写字母?

转载 作者:行者123 更新时间:2023-11-30 07:39:55 24 4
gpt4 key购买 nike

我正在尝试使用我用 JavaScript 编写的脚本创建唯一标识符。我对这些标识符应用的约束如下:

  1. 标识符的前九个字符必须是随机数字序列。我将“数字”定义为 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} 的集合。
  2. 每个标识符的最后一个字符必须是随机的单个英文大写字母。我在 {A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V 上定义这个集合, W, X, Y, Z}。

我知道任何编程语言都不能代表真正的随机性。有些编程语言只是有一个模拟“随机性”的库函数,但我认为没有任何语言真正实现了真正的随机性思想。尽管如此,让我们假设 JavaScript Math.random() 函数是随机性的最佳实现。

这是我目前拥有的 JavaScript 代码:

// the numbers in this array represent the utf-8 codes for the uppercase letters A-Z
var uppercaseLetters = new Array(65,66,67,68,69,70,71,72,73,74,75,76,77,78,
79,80,81,82,83,84,85,86,87,88,89,90);

// http://stackoverflow.com/questions/16753876/javascript-button-to-pick-random-item-from-array
var randomElement = uppercaseLetters[Math.floor(Math.random() *
uppercaseLetters.length)];

document.write(String.fromCharCode(randomElement));

convertedElement = String.fromCharCode(randomElement);

// document.write("<br /> <br />");

// borrowed String.fromCharCode from some part of the Mozilla developer website
// you can also see the utf-8 character set on wikipedia:
// http://en.wikipedia.org/wiki/UTF-8
/* for(var index = 0; index < 26; index++) {
document.write(String.fromCharCode(uppercaseLetters[index]));
} */

document.write("<br /> <br />");

var result;

for(var count = 0; count < 9; count++) {
var randomNumber = Math.ceil((Math.random() * 10) - 1);
// var randomNumber = Math.ceil((Math.random() * 9)); may also work
document.write(randomNumber);
}

result += convertedElement;
document.write(result);

// http://stackoverflow.com/questions/1451009/javascript-infamous-loop-problem
/* function createDigitString() {
for(var count = 0; count < 9; count++) {
var randomNumber = Math.ceil((Math.random() * 10) - 1);
// var randomNumber = Math.ceil((Math.random() * 9)); may also work
document.write(randomNumber);
}
} */

这是显示它的 HTML:

<!DOCTYPE html>
<html>
<head>
<base href="file:///C:/Users/sillyname/" />
<script src="random-sequence.js"></script>
</head>

<body>
</body>
</html>

这两个文件显然存放在同一个目录下。所以,这段代码应该显示一个“随机”的 9 位序列,跳过几行,然后显示一个“随机”的大写字母。现在,我想通过将字母附加到数字序列来将两者结合起来。实现此目标的最佳(或最简单)方法是什么?

编辑:我还应该澄清一下,我想分别维护这两段“随机模拟”代码。换句话说,我想在保持可分离性的同时将最终序列存储在一个变量中:

var finalSequence = nineRandomDigits + randomUppercaseLetter

编辑:好的,我想我已经得到了我想要的东西,感谢所有贡献者。这是最终的解决方案。

function randomUppercaseLetter() {
var letter = String.fromCharCode(64 + Math.ceil(Math.random() * 26));
return letter;
}

function randomNumber(len) {
var randomNumber;
var n = '';

for(var count = 0; count < len; count++) {
randomNumber = Math.ceil((Math.random() * 10) - 1);
n += randomNumber.toString();
}
return n;
}

// Usage:
var finalSequence = randomNumber(9) + randomUppercaseLetter();

document.write(finalSequence);

最佳答案

此单个表达式将生成所需的 ID:

var id = Array.apply(0, Array(9)).map(function() {
return String.fromCharCode(48 + Math.floor(10 * Math.random()));
}).join('') + String.fromCharCode(65 + Math.floor(26 * Math.random()));

Array.apply(0, Array(9)).map() 是一个技巧(参见 herehere )用于避免显式 for 循环生成前 9 个数字。

要稍微反混淆,请使用辅助函数:

function randChar(start, count) {
return String.fromCharCode(start + Math.floor(count * Math.random()));
}

function generateId() {
return Array.apply(0, Array(9)).map(function() {
return randChar(48, 10);
}).join('') + randChar(65, 26);
}

关于javascript - 生成一个随机数字序列,然后在 JavaScript 中向该序列附加一个大写字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20225208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com