我有一个简单的for循环,它接受一串字符并吐出4个随机字符,我用它来创建游戏ID,用于将多个用户同步到一起。我觉得我的方法不够“随机”,在某些情况下,即使字符刺痛很大,也会产生重复的结果。没有必要存储创建的游戏ID以进行比较,以便查看它们是否存在,但是,我想要找出一种方法来更好地随机选择字符串中的字符。
var characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for( var i=0; i < 4; i++ )
{
gameId += characters.charAt(Math.floor(Math.random() * characters.length));
}
编辑:也许在for循环之前改变字符串可能是一种方式吗?
答案 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。