一种生成随机数的方式
生成随机数,除了常用的种子计算或者根据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")
)
)
)
)
)
) 谢谢分享 太强了,我的K :lol,看来有点强悍! 感谢大佬的分享! 确实好用,(fix (* (vldcl-RandomByGUID) 10))就可以得到0~9之间的随机数了吧 yjwht 发表于 2025-4-8 08:08
确实好用,(fix (* (vldcl-RandomByGUID) 10))就可以得到0~9之间的随机数了吧
是可以,不过如果要取0~9,可以直接
(chr (car (vl-remove-if-not
(function (lambda (x) (< 47 x 58)))
(vl-string->list
(vlax-get (vlax-create-object "Scriptlet.TypeLib") "GUID")
)
)))
只取第一个数字就好,没不要取小数再× kozmosovia 发表于 2025-4-8 09:01
是可以,不过如果要取0~9,可以直接
(chr (car (vl-remove-if-not
(function (lambda (x) (< ...
好的,我试试。多谢了 本帖最后由 kozmosovia 于 2025-4-9 12:28 编辑
yjwht 发表于 2025-4-8 09:08
好的,我试试。多谢了
也可以参考我在这里发的随机字符串的代码,将基础列表改成0~9来用cputick取随机
http://bbs.mjtd.com/forum.php?mo ... A%D7%D6%B7%FB%B4%AE
页:
[1]