Случайный массив SAS с неповторяющимися элементами

Не могли бы вы мне помочь. Я хочу сгенерировать случайный массив от 0 до 5 и использую эту функцию

rand_num = int(ranuni(0)*5+1)

Но я хотел бы создать случайный массив с элементами nonrecurrent. Например (1,2,3,4,5) (3,1,5,4,2) и т.д..

Как я могу это сделать? Спасибо!


person Alex    schedule 28.02.2017    source источник
comment
Также рассмотрите ответ @data_null на этот вопрос. call randperm это хороший вариант для вас. stackoverflow.com/questions/42086988/randoming-symbols- от-а-я/   -  person Longfish    schedule 28.02.2017


Ответы (1)


Я думаю, что call ranperm является лучшим решением для этого, хотя оба они имеют примерно одинаковые статистические свойства. Вот решение, использующее это (очень похожее на то, на что Кит указал в решении @data_null_ по другому вопросу ):

data want;
  array rand_array[5];

  *initialize the array (once);
  do _i = 1 to dim(rand_array);
    rand_array[_i]=_i;
  end;

  *seed for the RNG;
  seed=5;

  *randomize;
  *each time `call ranperm` is used, this shuffles the group;
  do _i = 1 to 1e5;
    call ranperm(seed,of rand_array[*]);
    output;
  end;
run;
person Joe    schedule 28.02.2017