1
kolyneh 2017-08-11 13:25:07 +08:00 via Android
生成 2-36 个随机字符和数字的组合字符串
function randomString (length){ return Math.random().toString(36). substring (2, length+2) } |
2
coderluan 2017-08-11 15:26:11 +08:00
^[A-Za-z0-9]+$
|
4
am241 2017-08-11 16:23:38 +08:00 via Android
十进制转 36 进制
|
5
noe132 2017-08-11 19:05:36 +08:00 1
https://gist.github.com/noe132/8610e59abd5e899c12acd8f9b7047a9c
如果 n 很大,这个数组非常大,36^n。 如果 n = 10 36 ^ 10 = 3,656,158,440,062,976 |
6
noe132 2017-08-11 19:11:20 +08:00 1
n = 4 的时候一共 1679616 组合
我在 e3 的 U 上需要运行 1.2 秒。 n = 5 时需要 1.2 * 36 秒。 |
7
msg7086 2017-08-12 09:57:48 +08:00
递推。
你想想,假如你有了 3 位的全组合,放在变量 comb3 里,现在要得出 4 位的全组合 com4,需要怎么做? |
8
msg7086 2017-08-12 10:17:53 +08:00 1
咱不会写 js,用 ruby 模拟了一个。
def comb(length) element = [*'a'..'z', *'0'..'9'] result = [''] length.times do result = result.flat_map do |pre| element.map { |e| pre+e } end end result end 不过说真的这个数量级已经很恐怖了,n=5 我这跑了 1 分多钟然后被 kill 了…… 用 ruby 内置方法跑的话也要不少时间。 element.repeated_permutation(5).count # => 60466176 9 秒。 |