kozmosovia 发表于 2024-2-29 20:30:37

一种生成随机数的方式

生成随机数,除了常用的种子计算或者根据cputick来计算,我们还可以采用另外一种不用计算的生成随机数的方法:可以利用生成GUID的方式,从生成的GUID中剔除非数字部分,剩余的部分可以前面补0.转换成成为0~1之间的数字。因为GUID的生成本身的离散型,再加上数字在整个GUID的出现也具有随机性,最终生成的随机数应该比单纯的种子计算或者根据cputick来计算来更加随机。
代码如下:

(Defun vldcl-RandomByGUID ()
(distof
    (strcat
      "0."
      (vl-list->string
        (vl-remove-if-not
          (function (lambda (x) (< 47 x 58)))
          (vl-string->list
          (vlax-get (vlax-create-object "Scriptlet.TypeLib") "GUID")
          )
        )
      )
    )
)
)

yshf 发表于 2024-2-29 20:54:44

谢谢分享

伊江痕 发表于 2024-2-29 21:27:42

太强了,我的K

chenbh2 发表于 2024-3-1 09:20:17

:lol,看来有点强悍!

guosheyang 发表于 2024-3-1 13:23:01

感谢大佬的分享!
页: [1]
查看完整版本: 一种生成随机数的方式