Selamlar,

CL + CGI uygulamaları için ısınma turlarını, yazdığım küçük bir sayısal loto yapmak istedim. Fakat bir sorunla karşılaştım. Başta cgi ve apache gibi unsurlardan kaynaklandığını sandığım sorunun konuyu inceleyince CLISP ile ilgili olduğunu gördüm.

Şöyleki, aşağıdaki kodu repl'dan, sbcl ve clisp yorumlayıcıdan çalıştırdığımda sorun yok. Her defasında, beklediğim gibi, farklı random değerleri geliyor.

Fakat ;

       $clisp sloto.lisp

şeklinde çalıştırdığımda her zaman aynı değerler geliyor, random funksiyonu her defasında sanki bir stackten okur gibi aynı değerleri veriyor.

(defun sloto (nofcol)
 (setf rndnum nil)
 (dotimes (j nofcol)
   (setf kolon nil)
   (dotimes (i 6)
     (setf rndnum (random 50))
     ;; debug print
     (print rndnum)
     (if (zerop rndnum)
         (if (zerop i) () (setf i (- i 1)))
         (if (member rndnum kolon)
             (setf i (- i 1))
(setf kolon (cons rndnum kolon))))) (setf kolon (sort kolon #'<))
  (print kolon)
))

(sloto 2)

Belki benim bilmediğim kolay bir yolu ya da yaptığım bariz bir hatam vardır, yardımcı olursanız sevinirim.

Necati Keseci


_______________________________________________
cs-lisp mailing list
cs-lisp@cs.bilgi.edu.tr
http://church.cs.bilgi.edu.tr/lcg
http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp

Cevap