Обсуждение:Как получить Random число определенной длины (RSL)
0 (0)
Обсуждение:Как получить Random число определенной длины (RSL) ( Обсуждение примера 19.06.2014 12:18 )
0(0)При формировании всяких справок, иногда нужно в номер документа вставить случайное число заранее заданной длины, на пример - 4 символа..
Еще один пример.
Посмотреть пример
>> ОтветитьА чем не устраивает реализация только на RSL? Вот к примеру ( Giguss 19.06.2014 12:40 )
0(0)MACRO GetRandomByLen(len) var i = 0; var ret_val = ""; while (i < len) if (not i) ret_val = ret_val + String(Random(9)+1); else ret_val = ret_val + String(Random(10)); end; i = i + 1; end; return int(ret_val); END;
>> ОтветитьПостановка вопроса неправильная :) ( Izmajlov 19.06.2014 12:52 )
0(0)Мне все варианты нравятся..
Я предложил другой вариант реализации, а уж пользователям выбирать :)
НО...
Не РСЛем единым жив программист.. Моя реализация - можно перенести в другие среды исполнения, программирования...
С уважением,
Измайлов Феликс
>> ОтветитьА можно и так ( kalyakin 24.06.2014 14:53 )
0(0)macro rnd4 var r = 0; if(strlen(string(r = (random(9999) + 1000))) > 4) r = r/10; end; return r; end;
>> ОтветитьИли так для разной длины ( kalyakin 24.06.2014 15:00 )
0(0)macro rndbylen(len) var r = 0; if(strlen(string(r = (random(9999) + int("1" + mkstr("0", len - 1))))) > len) r = r/10; end; return r; end;
>> ОтветитьА функция то не работает ( Giguss 26.06.2014 10:29 )
5(1)Если в len указывать > 4, то разных значений будет только 10000.
Если < 4, то какую бы ты длину не написал, возвращает всегда 3 разрядное число.
>> ОтветитьДа, потому что там ошибка. Заметил, после того как отправил, исправлять было уже лень. Вот исправил. ( kalyakin 26.06.2014 17:40 )
0(0)macro rndbylen(len) var r = 0; if(strlen(string(r = (random(int(mkstr("9", len))) + int("1" + mkstr("0", len - 1))))) > len) r = r/10; end; return r; end;
А больше 4х использовать не получиться, т.к после 32766 переполнение.
>> Ответитьв RSL можно проще ( Грищенков Юрий 15.10.2014 18:48 )
0(0)String(random(10000):o:4)
>> Ответить
Если нужно случайное число, не проще ли взять константу? ( Kolesnikov 24.06.2014 15:16 )
0(0)А если число нужно для непересечения с существующими (чтоб не повторялось) - итератор.
А еще можно на другом языке генерировать макрос с уже подставленным случайным числом.
>> Ответить