scramble.pro предполагает, что входной целочисленный массив, поэтому он всегда дает целочисленный массив в качестве своей продукции. Вы можете, однако, использовать его, чтобы сгенерировать случайное упорядочение индексов и кормить их обратно в исходный массив (как mgalloy сделал с mg_sample):
IDL> array = [2.3, 4.5, 5.7,8.9]
IDL> scr_array = array[scramble(n_elements(array))]
IDL> print, scr_array
8.90000 2.30000 5.70000 4.50000
Здесь scramble
дается одно целое значение, так создает требуемые случайные индексы. Для ванильного IDL только, я часто использую в randomu
и sort
функции в сочетании, чтобы получить тот же эффект:
IDL> array = [2.3, 4.5, 5.7,8.9]
IDL> indices = sort(randomu(seed, n_elements(array)))
IDL> scr_array = array[indices]
IDL> print, indices
3 2 0 1
IDL> print, scr_array
8.90000 5.70000 2.30000 4.50000
Здесь мы используем randomu
для создания набора случайных чисел с одинаковым числом элементов как array
, и sort
дает нам индексы, которые поместили бы этот случайный массив в порядок. Вместе они дают вам случайный порядок индексов. Конечно, вы можете поставить это на одной линии тоже:
IDL> array = [2.3, 4.5, 5.7,8.9]
IDL> scr_array = array[sort(randomu(seed, n_elements(array)))]
IDL> print, scr_array
5.70000 2.30000 8.90000 4.50000
+1, но разве нет способа сделать это в удостоверении личности с использованием ванили IDL? Matlab и R имеют встроенную функциональность. –
Я не знаю никаких встроенных библиотечных процедур для этого. – mgalloy