【原创】保留函数random&的参数
本帖最后由 baitang36 于 2024-5-16 15:58 编辑跟踪发现,保留函数random&最少一个参数,最多两个参数,第二个参数是什么呢?继续跟踪,发现它要求的类型是vector,有三个元素的vector
问题是,怎么试验也无法做出一个符合要求的vector
发现random&的出错信息是错误: 参数类型错误: random-state-p: 1
看来它需要的是一个特殊的vector,这vector的类型是random-state-p
搜了一下和random-state有关的保留函数,发现一个make-random-state,它可以没有参数,也可以有一个参数。没有参数时返回一个固定vector,好像没意义。经过试验发现这个参数是T
总结一下,random&的用法是:(random& 整数 (make-random-state T))
random&make-random-state都是保留函数,用之前要用trf_9.fas的tranf转换一下。(load "trf_9.fas")(tranf "make-random-state")
试验一下:
命令: (random& 300 (make-random-state T))
261
命令: (random& 300 (make-random-state T))
18
命令: (random& 300 (make-random-state T))
231
(make-random-state T)每次生成的vector都是不同的,这样生成的随机数比一个参数更随机一些 感谢长老的分享! 本帖最后由 crtrccrt 于 2024-5-17 09:44 编辑
采用 (make-random-state T)参数后,试试连续调用返回值,我这里返回值均相同,不用该参数时返回随机值
(repeat 100(princ "\n")(princ (random& 100)) )(princ)
(repeat 100(princ "\n")(princ (random& 100 (make-random-state T))) )(princ)
(repeat 999(princ "\n")(princ (random& 100 (make-random-state T))) )(princ)
crtrccrt 发表于 2024-5-17 09:42
采用 (make-random-state T)参数后,试试连续调用返回值,我这里返回值均相同,不用该参数时返回随机值
(repe ...
看来(make-random-state T)这个函数是复位种子?等我有时间扒一下它。 默默旁观大佬们都在研究什么
页:
[1]