(Random) in Common Lisp Nicht So Zufällig?
Okay, Letzte Frage und ich werde beendet haben meine Zahl erraten Spiel in Common Lisp! 😀 immer Wenn das Spiel startet (oder ein neues Spiel beginnt nach dem ersten Spiel), wird die folgende Funktion aufgerufen wird.
;;; 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)))
Also angeblich, jedes mal, wenn der Spieler beginnt ein Spiel, *target*
sollte festgelegt werden, um eine neue zufällige Zahl zwischen 1-100. Aber jedes mal, *target*
standardmäßig 82. Wie mache ich (random)
handeln... zufällig?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die Samen, die zufällig Stand am Anfang des Programms.
Ich denke, dass, wenn Sie eine Funktion definieren, mit der eine zufällige Zahl in es, es wird nicht aufgerufen, wenn Sie die Funktion aufrufen, tatsächlich, es werden bestimmt beim laden in der Datei und wenn es läuft diese definition ist fest auf diesen Wert. Dann Sie die Funktion aufrufen, jedes mal, die Zahl wird immer die gleiche sein. Wenn ich übergeben Sie eine variable, um die Funktion mit einem zufälligen jedes mal, wenn Sie aufgerufen wurde, dann war es zufällig jedes mal. Zumindest, dass was ich erlebt habe in meinem Programm
random
ist eine Funktion und stützt sich auf Nebenwirkungen, wie viele andere auch. Es wird ausgewertet, in den gleichen Umständen wie jede andere Funktion aufrufen. Wenn es heißt, in einem makro (eher als eine form entsprechend einem Aufruf der Funktion zurückgegeben wird), dann wird es wieder eine einzige Zahl und nicht irgendein besonderes Objekt, welches ausgewertet wird, um Zufallszahlen (beachten Sie, dass solch ein spezielles Objekt, eine form, wie(random 1.0)
). Vielleicht ist das, was du meinst.