改善字符串的随机字符输出

时间:2015-01-30 19:16:29

标签: javascript algorithm random

我有一个简单的for循环,它接受一串字符并吐出4个随机字符,我用它来创建游戏ID,用于将多个用户同步到一起。我觉得我的方法不够“随机”,在某些情况下,即使字符刺痛很大,也会产生重复的结果。没有必要存储创建的游戏ID以进行比较,以便查看它们是否存在,但是,我想要找出一种方法来更好地随机选择字符串中的字符。

var characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

    for( var i=0; i < 4; i++ )
    {
        gameId += characters.charAt(Math.floor(Math.random() * characters.length));
    }

编辑:也许在for循环之前改变字符串可能是一种方式吗?

4 个答案:

答案 0 :(得分:0)

我通常会这样:

let length = 4,
    random = (Math.random() * Number.MAX_VALUE).toString(36).substr(0,length);

答案 1 :(得分:0)

一个简单的替代方案:

function generateRandomID() {
   return Math.random().toString(36).slice(-4);
};

Obs:只是数字和小写字母

答案 2 :(得分:0)

我认为你的解决方案就像你要获得的一样随机,并且改变字符串不会使它“更随机”。但是this可能是一种更简单的方法。

答案 3 :(得分:0)

我认为您的方法可以正常使用。我唯一的问题是你为什么选择只使用4个字符?您可能只需要更长的ID。