随机不能“随便”!
随机数问题:如果产生的随机数不理想,其中一些不能要,怎么办?
能不能做个数组 【1,3,6,8,31,289,45,......】
用lisp从里面随机抽取采用?
得到随机数,再用member判断一下。
例如得到随机数 7 , (member 7 '( 13 5 7 9 ...)) ,如果有返回值的话就再重新得到随机数. 直接从你的数组里随机获取不是更快么。。 nth 随机序号 list 顶起来,谁能写个代码,解决这个问题? (defun riqi_sj(/ riqi sj39 x sj) ;(riqi_sj) ;wz=日期+随机数
(setq riqi (menucmd "M=$(edtime,$(getvar,date),YYMODD.)"));YYYY.MO.DD-hh:mm.ss
;3~9之间的随机数 819534890 2015-6-10 http://bbs.mjtd.com/forum.php?mod=viewthread&tid=168429&highlight=%CB%E6%BB%FA%CA%FD
(setq sj39 (strcat (rtos (+ (fix (* (* (rem (getvar "cputicks") 1e3) 1e-3) 7)) 3))""));"这里可以写后缀"
(setq x (rtos (getvar "cputicks") 2 0))
(setq sj (substr x (- (strlen x) 4)))
(setq wz (strcat riqi sj39 sj))
(setq riqi nil sj39 nil x nil sj nil)
(princ)) riqi、sj39都可以单独使用
最笨的办法如下:
(defun c:13()
(setq x nil)
(while (not x)
(setq x (strcat (rtos (+ (fix (* (* (rem (getvar "cputicks") 1e3) 1e-3) 7)) 0))"")) ;0~9随机数
(if (or (= x "0")(= x "1")(= x "2")(= x "3")(= x "4")(= x "5")(= x "6")(= x "7")(= x "8")(= x "9") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
)
(progn (alert x)) (setq x nil) )
)
(princ))
你可以用 x 组合为任意数 本帖最后由 yxp 于 2018-7-13 14:26 编辑
来自高大师的方法,需要系统注册dwx
;;创建dwx对象
(setq DWX (vlax-create-object "DynamicWrapperX"))
;;声明C语言内库的rand函数,C内裤由Windows自带
(vlax-invoke DWX 'Register "MSVCRT" "rand" "r=l")
;;调用C语言的 rand 函数,生成一个 0~2^15 的一个随机数
(vlax-invoke DWX 'rand)
页:
[1]