如何在常见的lisp中获得负的随机整数? 标准库中是否有一些功能?
----更新于2012/06/15 ---- 也许我没有正确描述我的问题。我真正想要的是获得n和-n之间的随机整数。
答案 0 :(得分:4)
直接申请否定。
(- (random x))
编辑修订后的问题。这不是一个常见的lisp事物,更像是一般的编程事物。
(defun random-n (n)
(- (random (1+ (* 2 n))) n))
阅读CLHS中的random
。
答案 1 :(得分:2)
如果您想要从-n
到n
的随机数:
2n+1
,因为随机从0到n(不包括n)(defun my-random (n)
(- (random (1+ (* 2 n))) n))
答案 2 :(得分:0)
由于这里已经有了一个很好的答案,我将再添加一个funny answer(另外,请注意,它可能比正确答案更有效!)
(boole boole-c1 (random (1- n)) 0)
将为您提供您所寻求的东西!
答案 3 :(得分:-1)
正如您所期望的那样,(- -1 (random n))
会给出一个介于-n和-1之间的随机整数,其概率为(近似),其中n是任意整数。