Generates a pseudorandom permutation.
int *imsls_random_permutation (int k, ..., 0)
int
k (Input)
Number of integers to
be permuted.
An array of length k containing the random permutation of the integers from
1 to k. To release this space, use free.
int
*imsls_random_permutation (int k,
IMSLS_RETURN_USER, int ir[],
0)
IMSLS_RETURN_USER,
int ir[]
(Output)
User-supplied array of length k containing the random permutation of the integers from 1 to k.
Routine imsls_random_permutation generates a pseudorandom permutation of the integers from 1 to k. It begins by filling a vector of length k with the consecutive integers 1 to k. Then, with M initially equal to k, a random index J between 1 and M (inclusive) is generated. The element of the vector with the index M and the element with index J swap places in the vector. M is then decremented by 1 and the process repeated until M = 1.
In this example, imsls_random_permutation is called to produce a pseudorandom permutation of the integers from 1 to 10.
imsls_random_seed_set(123457);
ir = imsls_random_permutation(k, 0);
printf("Random permutation of the integers from 1 to 10\n");
imsls_i_write_matrix("", 1, k, ir,
Random permutation of the integers from 1 to 10
Visual Numerics, Inc. PHONE: 713.784.3131 FAX:713.781.9260 |