ठीक है, अंतिम प्रश्न और मैं आम लिस्प में अपना नंबर अनुमान लगाने वाला गेम समाप्त कर दूंगा! : डी जब भी खेल शुरू होता है (या पहले गेम के बाद एक नया गेम शुरू होता है), तो निम्न फ़ंक्शन को कॉल किया जाता है।(यादृच्छिक) सामान्य लिस्प में इतना यादृच्छिक नहीं है?
;;; Play the game
(defun play()
;; If it's their first time playing this session,
;; make sure to greet the user.
(unless (> *number-of-guesses* 0)
(welcome-user))
;; Reset their remaining guesses
(setq *number-of-guesses* 0)
;; Set the target value
(setq *target*
;; Random can return float values,
;; so we must round the result to get
;; an integer value.
(round
;; Add one to the result, because
;; (random 100) yields a number between
;; 0 and 99, whereas we want a number
;; from 1 to 100 inclusive.
(+ (random 100) 1)))
(if (eql (prompt-for-guess) t)
(play)
(quit)))
तो माना जाता है कि, हर बार जब खिलाड़ी एक खेल शुरू होता है, *target*
1-100 के बीच एक नई यादृच्छिक पूर्णांक पर सेट किया जाना चाहिए। हालांकि, प्रत्येक बार, *target*
82 तक चूक जाता है। मैं (random)
कार्य कैसे कर सकता हूं ... यादृच्छिक रूप से?
टिप्पणी आवश्यक नहीं है। सीएल विनिर्देश वर्तमान समय का उपयोग करने के लिए जरूरी नहीं है, यह सिर्फ "कुछ तरीकों से यादृच्छिक रूप से प्रारंभ" कहता है। – Svante
@Svante: हाँ आप सही हैं। अपडेट किया गया। – kennytm