我正在尝试在函数内使用random-integer
srfi-27
,但每次调用它时它总是返回相同的数字。
(use srfi-27)
(define get-n
(random-integer 10))
(print get-n)
(print get-n)
(print (random-integer 10))
(print (random-integer 10))
(print (random-integer 10))
(print get-n)
(print get-n)
输出:
8
8
1
9
8
8
8
有人可以向我解释为什么这个函数总是给我回复相同的数字。
此外,我如何抽象编写随机数的代码?
在示例中,我只询问0到10之间的数字,但实际上我想对返回的数字做额外的事情,我不想复制粘贴此代码。
答案 0 :(得分:2)
get-n
不是一个函数,它只是一个变量,它包含分配给random-integer
时单个调用的结果。如果您希望每次都获得一个新的随机数,则必须定义一个函数,并将其称为函数。
(define get-n
(lambda() (random-integer 10)))
(print (get-n))
(print (get-n))
(print (get-n))
上述函数定义语法可以缩写为:
(define (get-n)
(random-integer 10))