当前位置:  开发笔记 > 人工智能 > 正文

使用lisp生成随机数列表

如何解决《使用lisp生成随机数列表》经验,为你挑选了1个好方法。

我正在尝试使用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))

但我希望每个列表由不同的随机数组成.

感谢您的时间.



1> Svante..:

使用:initial-elementmake-list,该元素仅创建一次.

实现目标的一种方法:

(loop :repeat individuals
      :collect (create-chromosome min max))


更不用说`create_chromosome`本身可以从同样的事情中受益:`(循环重复6收集(random_in min max))
推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有