1

Common Lispで負のランダム整数を取得するにはどうすればよいですか?標準ライブラリにいくつかの関数はありますか?

---- 2012/06/15に更新----おそらく、質問を正しく記述していませんでした。私が実際に欲しいのは、nと-nの間のランダムな整数を取得することです。

4

4 に答える 4

4

否定を直接適用します。

(- (random x))

改訂された質問の編集。これは、一般的なlispのことではなく、一般的なプログラミングのことです。

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

CLHSで読んrandomでください。

于 2012-06-13T05:36:08.337 に答える
2

-nからまでの乱数が必要な場合n

編集済み、2n+1ランダムは0からn(nを除く)であるためである必要があります

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

ここにはすでに良い答えがあるので、もう1つ面白い答えを追加します(また、正解よりもさらに効率的かもしれません!)

(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 に答える