随机输出极端根,空变量

时间:2014-06-15 18:04:49

标签: javascript random

我的随机生成器主要使名称偏大。从我读到的内容可能是一个因素,如果你使用.round,.ceil或.floor。它也应该使名称不小于3且不大于13。

将名称添加到名称后,一些名称分别为2和14等,所以我再次修改它。我对此有错误吗? 还有如何清空var以便回收利用。每当我尝试回收它并重新运行它时,它会不断添加到原始的var

var nameLength = Math.floor(Math.random() * (13 - 3) + 3); /* min 3 max 13*/
var compareLetter = 0;
var randomLetter = "";
var randomName = "";
var capitolLetter = "";
var checkLetter = 0;
var nameTitle = "XXX"; /* titles add _ between title and name*/
var nameLetters = [
    ["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"],
    ["a", "e", "i", "o", "u"],
    ["b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z"]
];
if (nameTitle !== "") { /* my attempt to subtract title length +1 from name length if over 13*/
    nameLength = nameLength + (nameTitle.length + 1);
    if (nameLength > 13) {
        nameLength = nameLength - (nameLength - 13);
    }
}
for (i = 0; i < nameLength; i++) {
    randomLetter = nameLetters[compareLetter][Math.floor(Math.random() * nameLetters[compareLetter].length)];
    checkLetter = nameLetters[1].indexOf(randomLetter);
    if (checkLetter > -1) { /* my version of keeping consanants and vowels from stacking up */
        compareLetter = 2;
    } else {
        compareLetter = 1;
    }
    if (randomName.length < 1) { /* my version to keep first letter capitolized*/
        capitolLetter = randomLetter.toUpperCase();
        randomName = randomName + capitolLetter;
    } else {
        randomName = randomName + randomLetter;
    }
}
if (nameTitle !== "") {
    alert(nameTitle + "_" + randomName);
} else {
    alert(randomName);
}
alert(nameLength);
alert(randomName.length);

任何指导都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我还没有评论,所以这将是一个伪装成答案的评论......

1)Math.random()将返回零,但不会返回1 - 它返回0(包括)和1(不包括)之间的数字。因此,以这种方式使用地板永远不会导致达到您的上限。 Math.round将是更好的选择。 (这也适用于你以后使用Math.random选择字母 - 我不认为你会得到一个&#34; z&#34;有了这个,但我还没有检查过你的数学。)

2)初始随机nameLength calc有点折磨 - 我遵循它,但在计算中嵌入(13-3)只是尴尬。只需简单计算并相应评论即可。

 var nameLength = Math.round(Math.random() * 10) + 3

3)您可能想要解释nameTitle与nameLength的交互。我无法弄清楚你在那里想要完成什么 - 比方说,例如,你的上述计算结果是名称长度为8.你的名字标题现在硬连线为&#34 ; XXX&#34;,所以你的计算只是将nameLength从8改为12.基本上,你将nameLength加4,直到你得到13.这可能是你想要的,但为什么?

我不知道以上任何一个 你看到可变长度值的原因,但他们可能是贡献者。