Dav*_*ona 1 lisp sbcl common-lisp
我正在尝试使用Lisp进行遗传算法,我想生成一个包含五个随机数的列表.
我可以生成该列表,但所有子列表都由相同的随机数组成,这是因为我不确定我是否正确管理"随机状态".
任何人都可以给我一个提示吗?
这是代码:
(setf *random-state* (make-random-state t))
(defun random_in
(min max)
(+ (random (+ (- max min) 1) *random-state*) min))
(defun create_chromosome
(min max)
(list (random_in min max) (random_in min max) (random_in min max) (random_in min max) (random_in min max)))
(defun create_population
(individuals min max)
(make-list individuals :initial-element (create_chromosome min max)))
(write (create_population 3 10 100))
Run Code Online (Sandbox Code Playgroud)
该程序的输出是:
((54 51 85 61 44) (54 51 85 61 44) (54 51 85 61 44))
Run Code Online (Sandbox Code Playgroud)
但我希望每个列表由不同的随机数组成.
感谢您的时间.
使用:initial-element时make-list,该元素仅创建一次.
实现目标的一种方法:
(loop :repeat individuals
:collect (create-chromosome min max))
Run Code Online (Sandbox Code Playgroud)