【问题标题】:Generate random string with given variables生成具有给定变量的随机字符串
【发布时间】:2020-02-19 19:21:32
【问题描述】:

所以我的任务是生成包含 k 个单词的随机字符串,单词字母计数从 m(min) 和 n(max) 中随机化。

实际上我已经做了所有事情,我只是不明白为什么Math.random() 函数每次都给出相同的数字,这就是为什么随机字数不起作用的原因,它总是在每个 k 字中使用相同的字母数.

这是我的代码:

// Random string with more given variables
function randomStringIntermediate(){
    var m = parseInt(prompt("How many random letters in a word(min)"));
    var n = parseInt(prompt("How many random letters in a word(max)"));
    var k = parseInt(prompt("How many words in a string"));
    var letters = ("abcdefghijklmnopqrstuvwxyz");
    var p = document.getElementById("p9");
    var word = "";
    for(j = 0; j < k; j++){
        word += " "
        for(i = 0; i < (Math.floor(Math.random()) + m) * (n-m); i++){
            var letter =  letters.charAt(Math.random() * letters.length);
            word += letter;
        }
    }
    p.innerHTML = word;
}

【问题讨论】:

标签: javascript


【解决方案1】:

问题在于你的字数:

(Math.floor(Math.random()) + m) * (n-m)

术语Math.floor(Math.random()) + m 将始终为m,因为根据MDN documentation:

Math.random() 函数返回 0–1 范围内的浮点伪随机数(包括 0,但不包括 1)

你可能是想让你的括号在最后结束:)

【讨论】:

  • 感谢您详细解释。
  • 我身边的一个简单的错误,我笑了一会儿,有时大脑会厌倦犯这样的错误。
【解决方案2】:

改变一下

(Math.floor(Math.random()) + m) * (n-m)

到

(Math.floor(Math.random() * (n-m) + m))

【讨论】:

  • 另外在 letters.charAt() 处添加 Math.floor(...)
猜你喜欢
  • 2014-03-07
  • 1970-01-01
  • 1970-01-01
  • 2014-07-13
  • 1970-01-01
  • 1970-01-01
  • 2016-12-21
  • 2016-01-04
  • 1970-01-01
相关资源
最近更新 更多