help-octave
[Top][All Lists]

## Re: Randomly generate 10 different integers

 From: Jaroslav Hajek Subject: Re: Randomly generate 10 different integers Date: Thu, 17 Sep 2009 08:08:38 +0200

```On Wed, Sep 16, 2009 at 12:22 PM, Dupuis <address@hidden> wrote:
>
>
>
> Xin Dong wrote:
>>
>> Hi,
>>
>> 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?
>>
>>
>
> What you're searching for is an implementation of the Fisher-Yates
> algortihm, see http://en.wikipedia.org/wiki/Fisher–Yates_shuffle
>
> Here is a possible way:
> x=(1:10); n = length(x);
> while n >= 2,
>  t = ceil(unifrnd(0, n)); %# returns 1 <= t <= n
>  if (n != t), dummy = x(n); x(n) = x(t); x(t) = dummy; endif %# permute
>  n = n - 1;
> endwhile
> --

Btw., in current tip, randperm is a compiled function and implements
the Fisher-Yates (Knuth) shuffle. It can also produce a set of
permutations at once.

--
RNDr. Jaroslav Hajek
computing expert & GNU Octave developer
Aeronautical Research and Test Institute (VZLU)
Prague, Czech Republic
url: www.highegg.matfyz.cz

```