1

如何在 common lisp 中获得负随机整数?标准库中有一些功能吗?

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

4

4 回答 4

4

直接应用否定。

(- (random x))

修改后的问题的编辑。这不是一个普通的 lisp 事情,而是一个通用的编程事情。

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

randomCLHS中继续阅读。

于 2012-06-13T05:36:08.337 回答
2

如果你想要从-n到的随机数n

编辑了,应该是2n+1因为random是从0到n(排除n)

(defun my-random (n)
    (- (random (1+ (* 2 n))) n))
于 2012-06-15T18:26:08.920 回答
0

既然这里已经有一个很好的答案,我就再添加一个有趣的答案(另外,请注意,它可能比正确答案更有效!)

(boole boole-c1 (random (1- n)) 0)

将为您提供您所寻求的!

于 2012-06-13T06:38:52.193 回答
-1

如您所料,(- -1 (random n)), 会给您一个介于 -n 和 -1 之间的随机整数,概率(大约)一致,其中 n 是任意整数。

于 2012-06-13T00:52:40.357 回答