以下のコードは間違った答えです。これは、0と1の間の多くの乱数を持つ配列の平均である約0.5を与えるはずです。問題は、Nが "大きい"か、おそらく生成された乱数の精度ですか?このコードは、N(10^7,10^6など)の小さな値に対してうまく機能します。いくつかのアドバイスが参考になります。大きなN. Common Lispの結果が不正なコード
ありがとうございます。
(defun randvec(n)
(let ((arr (make-array n)))
(dotimes (i n)
(setf (aref arr i) (random 1.0))
)
arr
)
)
(defparameter N (expt 10 8))
(setf *random-state* (make-random-state t))
(defparameter vector1 (randvec N))
(format t "~a~%" (/ (reduce #'+ vector1) (length vector1)))
タイプミスによる謝罪私は0と1を意味します。 "大き過ぎる" – Francisco
数値解析の精度不良の古典的な例に挑戦しています。代わりに各数字/前/追加を分けてください。次に、同じ目盛りの数字を追加します。 – BadZen