help-octave
[Top][All Lists]

## Re: Randomly generate 10 different integers

 From: Pablo Subject: Re: Randomly generate 10 different integers Date: Mon, 14 Sep 2009 21:16:29 -0400 User-agent: Mozilla-Thunderbird 2.0.0.22 (X11/20090707)

```Rob Mahurin wrote:
> On Jun 30, 2009, at 1:45 PM, Xin Dong wrote:
>> I wanna randomly generate 10 different integers in a given range. I
>> know I can use random function and discard duplicate values. But is
>> there any other simple way to do it?
>
> One way is
>
>       [junk, index] = sort(rand(1,10));
>       disp(index)
>
> Rob
>

I had to do this recently. The above example just gives a random
permutation of the numbers 1 to 10 (the randperm function does exactly
that). To get N random numbers from dmin to dmax you sholud do:
D = randperm(dmax - dmin + 1);
D = D(:,1:N);
D = D + dmin - 1;

This is not very efficient if you need to select very few numbers, or
almost all, from a very large range, because I was not interested in the
order of the numbers, and you have to sort every number of the range.

If you have a very large range (I used randperm(10000), and it gets VERY
slow!) you might replace the above with a custom sort function, that
only sorts the first N numbers. That way, you can shave off a LOT of time.

I know this comes a little late, but it might still help somebody!

Arnoques

```