[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
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
- Re: Randomly generate 10 different integers,
Pablo <=