我当前正在为创建自定义名称生成器的随机单词部分。每个值与其他1-2合并以创建自定义名称。问题是,我希望某些单词部分包含随机字母。
我当前有一个数组设置,每个随机单词部分和一个链接到此随机字母创建者的函数。问题是,当数组首次运行时,它将这些字母设置为特定的事物。因此,它使输出相同(对于那些"自定义"字母(。
我的代码如下:
//Letters in alphabet in order to generate more random outputs.
var alphabet = ["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"];
//Selects a random letter and outputs a return value.
var randomLetter = function(letterCase) {
var letterID = randomNumber(alphabet.length);
console.log(letterID);
if(letterCase === "C") {
return alphabet[letterID];
} else if(letterCase === "L") {
return alphabet[letterID].toLowerCase();
} else {
console.log("randomLetter function failed to generate a random letter. No set letter case.");
}
};
//Base names for town name generations. Called within a function.
var townNameStart = ["Ji", "Ri", "Li", "We", "Wete", "Lakeside Zi", "Za", "Mount "+randomLetter("C")+randomLetter("L")];
如果我运行了console.log(townNameStart[7] +" "+ townNameStart[7]);
,我希望它输出两个完全不同的字母组合。我不希望它在输出时这样结束:i.imgur.com/yruxwpq.png。它需要每次都具有>完全不同的字母(没有重新加载脚本(。每次调用数组中的函数如何(分配随机字母(以防止相同的字母输出?
每次调用函数时,我是否应该将数组设置为原始状态?哪个工作是最好的(重新定义数组或其他方法(?
仍在寻找帮助。
您在控制台中有一些错误。在此处发布之前,请务必检查一下,如果还有一个错误帖子。
//Letters in alphabet in order to generate more random outputs.
var alphabet = ["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"];
function randomNumber(len) {
return Math.round(Math.random() * len)
}
//Selects a random letter and outputs a return value.
var randomLetter = function(lower) {
var letterID = randomNumber(alphabet.length);
if (lower) {
return alphabet[letterID].toLowerCase();
}
return alphabet[letterID];
};
//Base names for town name generations.
var townNameStart = [
"Ji",
"Ri",
"Li",
"We",
"Wete",
"Lakeside Zi",
"Za",
"Mount " + randomLetter() + randomLetter(true),
"Saint " + randomLetter() + randomLetter(true)
];
console.log(townNameStart.join(', '))
输出Ji, Ri, Li, We, Wete, Lakeside Zi, Za, Mount Ua, Saint Bn
您可以在
上澄清吗每次称为阵列时,将随机字母不同的最有效方法是什么?
一种选择是洗牌,但随机性本身就是一个挑战。
// From http://stackoverflow.com/questions/6274339/how-can-i-shuffle-an-array
function shuffle(a) {
for (let i = a.length; i; i--) {
let j = Math.floor(Math.random() * i);
[a[i - 1], a[j]] = [a[j], a[i - 1]];
}
}
//Selects a random letter and outputs a return value.
var randomLetter = function(lower) {
var letterID = randomNumber(alphabet.length);
if (lower) {
return alphabet[letterID].toLowerCase();
}
shuffle(alphabet);
return alphabet[letterID];
};
编辑以地址评论:
代码副本直接贴在PLNKR的错误:
(index):51 Uncaught ReferenceError: randomNumber is not defined
at randomLetter ((index):51)
at window.onload ((index):66)
randomLetter @ (index):51
window.onload @ (index):66
另外,您可以解释如何&为什么该对象保留函数与数组?
这个问题不清楚。