Сгенерируйте 100 данных случайным образом или выберите, если это возможно

Я хочу протестировать свою модель, мне нужно протестировать ее на некоторых данных, я хочу сгенерировать данные, на самом деле я хочу иметь 125 различных параметров от 0 до 10000.

Например, ниже у нас есть 4 разных параметра, от 1 до 300.

 Set I/0*300/;
 Parameter MyParameter;
 MyParameter /4 1,10 1,42 1,87 1/;

Я не хочу делать это вручную.

Есть ли какой-либо метод, который я генерирую автоматически.

другой способ спросить:

как выбрать 4 случайных элемента набора «I» без повторения?


person linkho    schedule 26.08.2018    source источник


Ответы (1)


Попробуй это:

Set       I     /0*300/
          picks /p1*p4/;
Scalar    pick;
Parameter MyParameter(I);

MyParameter(I) = 0;
loop(picks,
  pick = uniformInt(1, card(I));

* Make sure to not pick the same one twice
  while(sum(I$(pick=ord(I)),MyParameter(I))=1,
    pick = uniformInt(1, card(I))
    Display 'here';
  );

  MyParameter(I)$(pick=ord(I))=1;
);
Display MyParameter;
person Lutz    schedule 27.08.2018
comment
спасибо, это работает, можете ли вы подробнее объяснить ваш код в «пока», я не могу понять, что происходит в «пока», и как он может убедиться, что элемент не выбран дважды - person linkho; 28.08.2018
comment
Выбор строки =uniformInt(1,card(I)); до того, как время может вернуть число, которое уже было выбрано ранее, поскольку оно является случайным. И так как вы хотите увидеть 4 разных элемента, я добавил время... чтобы убедиться, что вы действительно это понимаете. Итак, условие $ проверяет, было ли выбранное число уже выбрано ранее, и если это так, оно выбирает новое случайно, пока не выберет номер, который не был выбран ранее. Строку дисплея можно игнорировать. Маловероятно, что это пока необходимо, потому что велика вероятность, что вы получите просто 4 разных числа из 300, но я хотел быть уверенным. - person Lutz; 29.08.2018