(let ((size 9999))
(multiple-value-bind (s sum avg min max)
(loop with s = (make-array size :initial-element 0)
with r = size
until (zerop r)
for n = (random size)
when (zerop (aref s n))
do (decf r)
do (incf (aref s n))
sum 1 into sum
minimize (aref s n) into min
maximize (aref s n) into max
finally (return (values s sum (/ sum size) min max)))
(format t "~@{~S~%~}" sum (float avg) (list min max))
(loop for n from min to max
do (format t "~A~4T~S~%" n (count n s)))))
KGxldCAoKHNpemUgOTk5OSkpCiAgKG11bHRpcGxlLXZhbHVlLWJpbmQgKHMgc3VtIGF2ZyBtaW4gbWF4KQogICAgICAobG9vcCB3aXRoIHMgPSAobWFrZS1hcnJheSBzaXplIDppbml0aWFsLWVsZW1lbnQgMCkKICAgICAgICAgICAgd2l0aCByID0gc2l6ZQogICAgICAgICAgICB1bnRpbCAoemVyb3AgcikKICAgICAgICAgICAgZm9yIG4gPSAocmFuZG9tIHNpemUpCiAgICAgICAgICAgIHdoZW4gKHplcm9wIChhcmVmIHMgbikpCiAgICAgICAgICAgICAgZG8gKGRlY2YgcikKICAgICAgICAgICAgZG8gKGluY2YgKGFyZWYgcyBuKSkKICAgICAgICAgICAgc3VtIDEgaW50byBzdW0KICAgICAgICAgICAgbWluaW1pemUgKGFyZWYgcyBuKSBpbnRvIG1pbgogICAgICAgICAgICBtYXhpbWl6ZSAoYXJlZiBzIG4pIGludG8gbWF4CiAgICAgICAgICAgIGZpbmFsbHkgKHJldHVybiAodmFsdWVzIHMgc3VtICgvIHN1bSBzaXplKSBtaW4gbWF4KSkpCiAgICAoZm9ybWF0IHQgIn5Ae35TfiV+fSIgc3VtIChmbG9hdCBhdmcpIChsaXN0IG1pbiBtYXgpKQogICAgKGxvb3AgZm9yIG4gZnJvbSBtaW4gdG8gbWF4CiAgICAgICAgICBkbyAoZm9ybWF0IHQgIn5BfjRUflN+JSIgbiAoY291bnQgbiBzKSkpKSkK