kozmosovia 发表于 2024-10-31 10:24:03

本帖最后由 kozmosovia 于 2024-10-31 10:50 编辑

随机质量差的很

baitang36 发表于 2024-10-31 15:12:38

本帖最后由 baitang36 于 2024-10-31 15:19 编辑

kozmosovia 发表于 2024-10-31 10:24
随机质量差的很
你没仔细看程序,第一个字母是每10秒换一次,第6个字符是1毫秒换一次。这是故意这么做的。
发布源码的目的是授人以渔,代码本身没多少技术含量,喜欢的人可以随意改,不喜欢无视即可。
你可以随意改自己不满意的地方。
猫老师也写过这个,代码如果发出来会吓着你的。
tryhi问为什么重复的内容不改成一个函数,也是为了这个,你可以随意去修改它。

kozmosovia 发表于 2024-10-31 15:58:42

本帖最后由 kozmosovia 于 2024-10-31 16:55 编辑

不算随机数的生成随机字符串(Defun RandomStr (len / _Core IDX PWD RTN TXT)
(Defun _Core ()
    ;;;; GUID只保留数字
    (vl-list->string
      (vl-remove-if-not
(function (lambda (x) (< 47 x 58)))
(vl-string->list
    (vlax-get (vlax-create-object "Scriptlet.TypeLib") "GUID")
)
      )
    )
)
;;; 生成ASCII=48~122的所有字符
(setq idx 47)
(while (<= (setq idx (1+ idx)) 122)
    (setq pwd (cons (chr idx) pwd))
)
;;; 去除不需要的特殊字符
(foreach abc '("/" "[" "]" "=" ":" ";" "`" "^" "\\" "?" ">" "<" "@")
    (setq pwd (vl-remove abc pwd))
)
(setqidx (length pwd)
txt (_Core)
rtn ""
)
;;;利用GUID创建长度为(4*指定长度)的数字字符串
(while (< (strlen txt) (* 4 len))
    (setq txt (strcat txt (_Core)))
)
(repeat len
    ;;;每4个数字转成<9999的整数对字符表长度取模,根据模数据提取对应的字符
    (setq rtn (strcat rtn
          (nth (rem (atoi (substr txt 1 4)) idx)
         pwd
          )
      )
    txt (substr txt 5)
    )
)
rtn
)
(repeat 11 (princ (strcat "\n " (RandomStr 20))))

Bao_lai 发表于 2024-10-31 19:00:53

kozmosovia 发表于 2024-10-31 10:24
随机质量差的很

要感谢盛老师分享,如果有更好的可以发出来,也是个思路,倒不必这样说。

xujinhua 发表于 2024-11-7 09:20:21

谢谢分享,收集一下看什么时候能用上
页: 1 [2]
查看完整版本: 分享一个生成随机字符串的源码