"; docformat = 'rst'\n" Comment.Single '\n; Example IDL (Interactive Data Language) source code.\n' Comment.Single '\n;+\n' Comment.Single '; Get `nIndices` random indices for an array of size `nValues` (without \n' Comment.Single '; repeating an index).\n' Comment.Single ';\n' Comment.Single '; :Examples:\n' Comment.Single '; Try::\n' Comment.Single ';\n' Comment.Single '; IDL> r = randomu(seed, 10)\n' Comment.Single "; IDL> print, r, format='(4F)'\n" Comment.Single '; 0.6297589 0.7815896 0.2508559 0.7546844\n' Comment.Single '; 0.1353382 0.1245834 0.8733745 0.0753110\n' Comment.Single '; 0.8054136 0.9513228\n' Comment.Single '; IDL> ind = mg_sample(10, 3, seed=seed)\n' Comment.Single '; IDL> print, ind\n' Comment.Single '; 2 4 7\n' Comment.Single '; IDL> print, r[ind]\n' Comment.Single '; 0.250856 0.135338 0.0753110\n' Comment.Single ';\n' Comment.Single '; :Returns: \n' Comment.Single '; lonarr(`nIndices`)\n' Comment.Single ';\n' Comment.Single '; :Params:\n' Comment.Single '; nValues : in, required, type=long\n' Comment.Single '; size of array to choose indices from\n' Comment.Single '; nIndices : in, required, type=long\n' Comment.Single '; number of indices needed\n' Comment.Single ';\n' Comment.Single '; :Keywords:\n' Comment.Single '; seed : in, out, optional, type=integer or lonarr(36)\n' Comment.Single '; seed to use for random number generation, leave undefined to use a \n' Comment.Single '; seed generated from the system clock; new seed will be output\n' Comment.Single ';-\n' Comment.Single 'function' Keyword ' ' Text 'm' Text 'g' Text '_' Text 's' Text 'a' Text 'm' Text 'p' Text 'l' Text 'e' Text ',' Text ' ' Text 'n' Text 'V' Text 'a' Text 'l' Text 'u' Text 'e' Text 's' Text ',' Text ' ' Text 'n' Text 'I' Text 'n' Text 'd' Text 'i' Text 'c' Text 'e' Text 's' Text ',' Text ' ' Text 's' Text 'e' Text 'e' Text 'd' Text '=' Operator 's' Text 'e' Text 'e' Text 'd' Text '\n' Text ' ' Text ' ' Text 'compile_opt' Keyword ' ' Text 's' Text 't' Text 'r' Text 'i' Text 'c' Text 't' Text 'a' Text 'r' Text 'r' Text '\n' Text ' \n ; get random nIndices by finding the indices of the smallest nIndices in a \n' Comment.Single ' ; array of random values\n' Comment.Single ' ' Text ' ' Text 'v' Text 'a' Text 'l' Text 'u' Text 'e' Text 's' Text ' ' Text '=' Operator ' ' Text 'randomu' Name.Builtin '(' Text 's' Text 'e' Text 'e' Text 'd' Text ',' Text ' ' Text 'n' Text 'V' Text 'a' Text 'l' Text 'u' Text 'e' Text 's' Text ')' Text '\n' Text ' \n ; our random values are uniformly distributed, so ideally the nIndices \n' Comment.Single ' ; smallest values are in the first bin of the below histogram\n' Comment.Single ' ' Text ' ' Text 'n' Text 'B' Text 'i' Text 'n' Text 's' Text ' ' Text '=' Operator ' ' Text 'n' Text 'V' Text 'a' Text 'l' Text 'u' Text 'e' Text 's' Text ' ' Text '/' Operator ' ' Text 'n' Text 'I' Text 'n' Text 'd' Text 'i' Text 'c' Text 'e' Text 's' Text '\n' Text ' ' Text ' ' Text 'h' Text ' ' Text '=' Operator ' ' Text 'histogram' Name.Builtin '(' Text 'v' Text 'a' Text 'l' Text 'u' Text 'e' Text 's' Text ',' Text ' ' Text 'n' Text 'b' Text 'i' Text 'n' Text 's' Text '=' Operator 'n' Text 'B' Text 'i' Text 'n' Text 's' Text ',' Text ' ' Text 'r' Text 'e' Text 'v' Text 'e' Text 'r' Text 's' Text 'e' Text '_' Text 'i' Text 'n' Text 'd' Text 'i' Text 'c' Text 'e' Text 's' Text '=' Operator 'r' Text 'i' Text ')' Text '\n' Text '\n ; the candidates for being in the first nIndices will live in bins 0..bin\n' Comment.Single ' ' Text ' ' Text 'n' Text 'C' Text 'a' Text 'n' Text 'd' Text 'i' Text 'd' Text 'a' Text 't' Text 'e' Text 's' Text ' ' Text '=' Operator ' ' Text '0L' Literal.Number.Integer.Long '\n' Text ' ' Text ' ' Text 'for' Keyword ' ' Text 'b' Text 'i' Text 'n' Text ' ' Text '=' Operator ' ' Text '0L' Literal.Number.Integer.Long ',' Text ' ' Text 'n' Text 'B' Text 'i' Text 'n' Text 's' Text ' ' Text '-' Operator ' ' Text '1L' Literal.Number.Integer.Long ' ' Text 'do' Keyword ' ' Text 'begin' Keyword '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text 'n' Text 'C' Text 'a' Text 'n' Text 'd' Text 'i' Text 'd' Text 'a' Text 't' Text 'e' Text 's' Text ' ' Text '+=' Operator ' ' Text 'h' Text '[' Text 'b' Text 'i' Text 'n' Text ']' Text '\n' Text ' ' Text ' ' Text ' ' Text ' ' Text 'if' Keyword ' ' Text '(' Text 'n' Text 'C' Text 'a' Text 'n' Text 'd' Text 'i' Text 'd' Text 'a' Text 't' Text 'e' Text 's' Text ' ' Text 'ge' Keyword ' ' Text 'n' Text 'I' Text 'n' Text 'd' Text 'i' Text 'c' Text 'e' Text 's' Text ')' Text ' ' Text 'then' Keyword ' ' Text 'break' Keyword ' ' Text ' ' Text ' ' Text ' ' Text '\n' Text ' ' Text ' ' Text 'endfor' Keyword '\n' Text '\n ; get the candidates and sort them\n' Comment.Single ' ' Text ' ' Text 'c' Text 'a' Text 'n' Text 'd' Text 'i' Text 'd' Text 'a' Text 't' Text 'e' Text 's' Text ' ' Text '=' Operator ' ' Text 'r' Text 'i' Text '[' Text 'r' Text 'i' Text '[' Text '0' Literal.Number.Integer ']' Text ' ' Text ':' Operator ' ' Text 'r' Text 'i' Text '[' Text 'b' Text 'i' Text 'n' Text ' ' Text '+' Operator ' ' Text '1L' Literal.Number.Integer.Long ']' Text ' ' Text '-' Operator ' ' Text '1L' Literal.Number.Integer.Long ']' Text '\n' Text ' ' Text ' ' Text 's' Text 'o' Text 'r' Text 't' Text 'e' Text 'd' Text 'C' Text 'a' Text 'n' Text 'd' Text 'i' Text 'd' Text 'a' Text 't' Text 'e' Text 's' Text ' ' Text '=' Operator ' ' Text 'sort' Name.Builtin '(' Text 'v' Text 'a' Text 'l' Text 'u' Text 'e' Text 's' Text '[' Text 'c' Text 'a' Text 'n' Text 'd' Text 'i' Text 'd' Text 'a' Text 't' Text 'e' Text 's' Text ']' Text ')' Text '\n' Text '\n ; return the first nIndices of them\n' Comment.Single ' ' Text ' ' Text 'return' Name.Builtin ',' Text ' ' Text '(' Text 'c' Text 'a' Text 'n' Text 'd' Text 'i' Text 'd' Text 'a' Text 't' Text 'e' Text 's' Text '[' Text 's' Text 'o' Text 'r' Text 't' Text 'e' Text 'd' Text 'C' Text 'a' Text 'n' Text 'd' Text 'i' Text 'd' Text 'a' Text 't' Text 'e' Text 's' Text ']' Text ')' Text '[' Text '0' Literal.Number.Integer ':' Operator 'n' Text 'I' Text 'n' Text 'd' Text 'i' Text 'c' Text 'e' Text 's' Text '-' Operator '1L' Literal.Number.Integer.Long ']' Text '\n' Text 'end' Keyword '\n' Text '\n\n; main-level example program\n' Comment.Single '\n' Text 'r' Text ' ' Text '=' Operator ' ' Text 'randomu' Name.Builtin '(' Text 's' Text 'e' Text 'e' Text 'd' Text ',' Text ' ' Text '10' Literal.Number.Integer ')' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text ' ' Text '\n' Text 'print' Name.Builtin ',' Text ' ' Text 'r' Text '\n' Text 'i' Text 'n' Text 'd' Text ' ' Text '=' Operator ' ' Text 'm' Text 'g' Text '_' Text 's' Text 'a' Text 'm' Text 'p' Text 'l' Text 'e' Text '(' Text '10' Literal.Number.Integer ',' Text ' ' Text '3' Literal.Number.Integer ',' Text ' ' Text 's' Text 'e' Text 'e' Text 'd' Text '=' Operator 's' Text 'e' Text 'e' Text 'd' Text ')' Text '\n' Text 'print' Name.Builtin ',' Text ' ' Text 'i' Text 'n' Text 'd' Text '\n' Text 'print' Name.Builtin ',' Text ' ' Text 'r' Text '[' Text 'i' Text 'n' Text 'd' Text ']' Text '\n' Text '\n' Text 'end' Keyword '\n' Text