如何在常见的lisp中获得负的随机整数?

时间:2012-06-13 00:40:57

标签: common-lisp

如何在常见的lisp中获得负的随机整数? 标准库中是否有一些功能?

----更新于2012/06/15 ---- 也许我没有正确描述我的问题。我真正想要的是获得n和-n之间的随机整数。

4 个答案:

答案 0 :(得分:4)

直接申请否定。

(- (random x))

编辑修订后的问题。这不是一个常见的lisp事物,更像是一般的编程事物。

(defun random-n (n)
  (- (random (1+ (* 2 n))) n))

阅读CLHS中的random

答案 1 :(得分:2)

如果您想要从-nn的随机数:

已编辑,应为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是任意整数。