On Jul 31, 9:28 pm, Francogrex <······@grex.org> wrote:
> Hi, I am trying to generate random deviates between 8 (that is 11-3)
> and 14 (that is 11+3) using what i wrote below:
>
> ;;Prepare the list
> (setf ls nil)
> ;;Generate the random deviates using random.
> (dotimes (i 500)
> (let ((rn (+ (random 11.0) 3.0)))
> (if (> rn (- 11.0 3.0)) (setf ls (cons rn ls)))))
> ;;test whether you are within the limits
> (apply #'min ls)
> (apply #'max ls)
>
> But this seems to me quite inefficient and bulky, I have a feeling
> there is a more straightforward way but can't find it. Anyone can help
> please? Thanks.
(loop for i from 1 to 500 collect (+ (random 3d0) 11))?
On Jul 31, 9:41 pm, ············@gmail.com wrote:
> On Jul 31, 9:28 pm, Francogrex <······@grex.org> wrote:
>
>
>
> > Hi, I am trying to generate random deviates between 8 (that is 11-3)
> > and 14 (that is 11+3) using what i wrote below:
>
> > ;;Prepare the list
> > (setf ls nil)
> > ;;Generate the random deviates using random.
> > (dotimes (i 500)
> > (let ((rn (+ (random 11.0) 3.0)))
> > (if (> rn (- 11.0 3.0)) (setf ls (cons rn ls)))))
> > ;;test whether you are within the limits
> > (apply #'min ls)
> > (apply #'max ls)
>
> > But this seems to me quite inefficient and bulky, I have a feeling
> > there is a more straightforward way but can't find it. Anyone can help
> > please? Thanks.
>
> (loop for i from 1 to 500 collect (+ (random 3d0) 11))?
Of course my previous message is wrong and the correct answer is (loop
for i from 1 to 500 collect (+ (random 6d0) 8))
Carlos
On Jul 31, 9:42 pm, ············@gmail.com wrote:
> Of course my previous message is wrong and the correct answer is (loop
> for i from 1 to 500 collect (+ (random 6d0) 8))
That works quite well. Thanks.
············@gmail.com writes:
> (loop for i from 1 to 500 collect (+ (random 6d0) 8))
Or more simply, since you don't need "i":
(loop repeat 500 collect (+ (random 6d0) 8))
--
Thomas A. Russ, USC/Information Sciences Institute