案例 2020-02-05 18:20:55
AUTOLISP立面是没有真正意义上的随机数算法的,所以如果要在lisp使用随机数只有利用其他数值获得伪随机数,常用的就是获取时间,即
(getvar "cdate")
以此来获取当前时间(整数部分为年月日,小数部分为时分秒,精确到0.01秒),cad中直接输入cdate也可以获取数值。一般情况会取秒及秒以后的一共三位数作为随机数(只能取这三位,因为十秒位是六进一,即每60秒直接进到分位,该位不会出现6 7 8 9这四个数,所以一般不考虑。)
如果你需要的随机整数刚好小于1000,则可以用这种方法。详细:
(defun random(@site / @date @random);@site作为随机数位数,定义为1,2,3分别对应0-9,0-99,0-999
(if(or(< 1 @site)(> 3 @site))(exit));如果@site大于3或小于3则函数停止
(setq @date(* 100000000 (getvar "cdate")));获取当前时间并去掉小数点赋值到@date
(setq @remValue 1);赋值除数为1
(repeat @site
(setq @remValue(* 10 @remValue))
);循环次数等于保留位数,如果三次则@remValue等于1000,两次100,一次10
(setq @random (rem @date @remValue));将@date保留最后若干位,赋值到@random
)
之后,如果要获取随机数只需要(random 1)或者(random2)、(random 3)即可获取一位、两位、三位伪随机数。
H13-1123现代北欧立体墙饰挂件原木板
zhidao
文章:57 问答:0
Copyright 模型组 2006-2024 All Rights Reserved ICP证:蜀ICP备2023015644号-7
四川鑫众焱信息技术服务有限公司| 地址:绵阳市涪城区瀚威城市中心1栋1单元42层2号