diff options
Diffstat (limited to 'tests/examplefiles/idl_sample.pro')
-rw-r--r-- | tests/examplefiles/idl_sample.pro | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/tests/examplefiles/idl_sample.pro b/tests/examplefiles/idl_sample.pro deleted file mode 100644 index 814d510d..00000000 --- a/tests/examplefiles/idl_sample.pro +++ /dev/null @@ -1,73 +0,0 @@ -; docformat = 'rst' - -; Example IDL (Interactive Data Language) source code. - -;+ -; Get `nIndices` random indices for an array of size `nValues` (without -; repeating an index). -; -; :Examples: -; Try:: -; -; IDL> r = randomu(seed, 10) -; IDL> print, r, format='(4F)' -; 0.6297589 0.7815896 0.2508559 0.7546844 -; 0.1353382 0.1245834 0.8733745 0.0753110 -; 0.8054136 0.9513228 -; IDL> ind = mg_sample(10, 3, seed=seed) -; IDL> print, ind -; 2 4 7 -; IDL> print, r[ind] -; 0.250856 0.135338 0.0753110 -; -; :Returns: -; lonarr(`nIndices`) -; -; :Params: -; nValues : in, required, type=long -; size of array to choose indices from -; nIndices : in, required, type=long -; number of indices needed -; -; :Keywords: -; seed : in, out, optional, type=integer or lonarr(36) -; seed to use for random number generation, leave undefined to use a -; seed generated from the system clock; new seed will be output -;- -function mg_sample, nValues, nIndices, seed=seed - compile_opt strictarr - - ; get random nIndices by finding the indices of the smallest nIndices in a - ; array of random values - values = randomu(seed, nValues) - - ; our random values are uniformly distributed, so ideally the nIndices - ; smallest values are in the first bin of the below histogram - nBins = nValues / nIndices - h = histogram(values, nbins=nBins, reverse_indices=ri) - - ; the candidates for being in the first nIndices will live in bins 0..bin - nCandidates = 0L - for bin = 0L, nBins - 1L do begin - nCandidates += h[bin] - if (nCandidates ge nIndices) then break - endfor - - ; get the candidates and sort them - candidates = ri[ri[0] : ri[bin + 1L] - 1L] - sortedCandidates = sort(values[candidates]) - - ; return the first nIndices of them - return, (candidates[sortedCandidates])[0:nIndices-1L] -end - - -; main-level example program - -r = randomu(seed, 10) -print, r -ind = mg_sample(10, 3, seed=seed) -print, ind -print, r[ind] - -end
\ No newline at end of file |