我使用(Math.random()*1e32).toString(36)作为一个简单的随机字符串生成器。它非常简单,工作良好,满足了我的需要(用于ids的时间随机,等等)
在chrome中,safari、firefox和ie Math.random()*1e32生成数字,如:8.357963780872523e+31 :-)
(8.357963780872523e+31).toString(36) -> 221fr2y11ebk4cog84wok,这正是我想要的。6.936gwtrpf69(e+20)。如何以跨浏览器的方式从221fr2y11ebk4cog84wok中获得相同的字符串8.357963780872523e+31?
顺便说一句:我从这个线程中知道了这个随机字符串:Random alpha-numeric string in JavaScript?。
发布于 2015-09-17 08:54:26
请记住,Math.random()返回0到1之间的值(排它),并且JavaScript中的数字有53位尾数,按照IEEE-754的要求,获得随机整数的一种安全方法是
Math.random() * Math.pow(2, 54)因此,可以从
(Math.random() * Math.pow(2, 54)).toString(36)请注意,没有关于字符数量的保证,根据随机值的大小顺序,字符数可以介于1到11之间。
发布于 2015-09-17 08:34:17
正如我所看到的,你不需要把随机数乘以这么大的数字。试试这个:
Math.random().toString(36).slice(2)够了吗?这是一个略短的字符串,但在所有浏览器中都是一致的(我测试过)。
https://stackoverflow.com/questions/32625702
复制相似问题