我正在尝试使用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))
该程序的输出是:
((54 51 85 61 44) (54 51 85 61 44) (54 51 85 61 44))
但我希望每个列表由不同的随机数组成.
感谢您的时间.
使用:initial-element
时make-list
,该元素仅创建一次.
实现目标的一种方法:
(loop :repeat individuals :collect (create-chromosome min max))