Имя: Пароль:
1C
1С v8
Как написать свой Случайный генератор буквоцифр
0 zladenuw
 
21.10.16
16:13
Как написать свой Случайный генератор буквоцифр.

Только использовать внешние языки ?
https://habrahabr.ru/post/197046/
1 AlexYurg
 
21.10.16
16:19
Использовать СлучайноеЧисло() в цикле
2 zladenuw
 
21.10.16
16:19
нашел такое.
function str_rand() {
        var result       = '';
        var words        = '0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM';
        var max_position = words.length - 1;
            for( i = 0; i < 5; ++i ) {
                position = Math.floor ( Math.random() * max_position );
                result = result + words.substring(position, position + 1);
            }
        return result;
    }

Надо будет запихнуть в 1с. и посмотреть. как он действительно генерит рандомом
3 zladenuw
 
21.10.16
16:20
(1) надо 3 буквы и 3 числа
4 Lexey_
 
21.10.16
16:20
(0) такой пойдет?
СтрЗаменить(Новый УникальныйИдентификатор, "-", "")
5 zladenuw
 
21.10.16
16:20
(3) длина 6 символов.
6 zladenuw
 
21.10.16
16:20
(4) кстати. да. надо попробовать
7 b_ru
 
21.10.16
16:25
Функция СлучайнаяБуква()
  Возврат Символ(СлучайноеЧисло(КодСимвола("а"), КодСимвола("я")));
КонецФункции
8 Boleev
 
21.10.16
16:26
(0) в БСП есть стандартная функция
////////////////////////////////////////////////////////////////////////////////
// Процедуры и функции работы с паролем.

// Создает новый пароль, соответствующий заданным правилам проверки сложности.
// Для облегчения запоминания, пароль формируется из слогов (согласная-гласная).
//
// Параметры:
//  ПараметрыПароля - Структура - возвращается функций ПараметрыПароля.
//  ГСЧ             - ГенераторСлучайныхЧисел - если уже используется.
//                  - Неопределено - создать новый.
//
// Возвращаемое значение:
//  Строка - новый пароль.
//
Функция СоздатьПароль(ПараметрыПароля, ГСЧ = Неопределено) Экспорт
9 zladenuw
 
21.10.16
16:32
(8) спасибо.
Поищу.

Но интересно разобраться.

(7)  для букв все идеально с 10000 нет не одного повторения. Вот только надо раздробить на 3 буквы и 3 числа :) Но это уже легче.

Спасибо
10 aka AMIGO
 
21.10.16
16:33
#define RAND_MAX 32767

static unsigned long int next = 1;

int rand(void)
{
next = next * 1103515245 + 12345;
return (unsigned int)(next/65536) % RAND_MAX;
}

void srand(unsigned int seed)
{
next = seed;
}

взято с: https://ru.wikipedia.org/wiki/Линейный_конгруэнтный_метод

и много других генераторов псевдослучайных чисел.
11 zladenuw
 
21.10.16
16:39
(10) спасибо
12 aka AMIGO
 
21.10.16
16:42
В 1969 году я нашел-было несложный генератор, с не вырождающейся последовательностью в пределах моих потребностей..
Где-то лежит бумажка с алгоритмом..

Подробности сгладились, идея осталась: высекать из дробной части иррационального числа несколько цифр с любого места
13 zladenuw
 
21.10.16
16:51
да еще суть в том. что нужно контролировать что бы было 3 буквы и 3 цифры. пока сделал вот так. показывает от 20 тысяч до совпадения.
    К = 1000000;
    ГСЧ =     Новый  ГенераторСлучайныхЧисел;
    масс = Новый Массив;
    Для ы=1 По к Цикл
        Код = "";
        Для п=1 По 6 Цикл
            
            Если БукваИлиЦифра(ГСЧ) Тогда
               Код = ?(ЗначениеЗаполнено(Код),Код,"")+СлучайнаяБуква(ГСЧ);
            Иначе    
               Код = ?(ЗначениеЗаполнено(Код),Код,"")+СлучайноЧисло(ГСЧ);
            КонецЕсли;
                        
        КонецЦикла;
        
        Если масс.Найти(Код) = Неопределено Тогда
            масс.Добавить(код);
        Иначе    
            Сообщить(код);
            сообщить(ы);
            Прервать;
        КонецЕсли;
    КонецЦикла;
    Сообщить(ы);
КонецПроцедуры


Функция СлучайнаяБуква(ГСЧ)
    
    Возврат Символ(ГСЧ.СлучайноеЧисло(КодСимвола("a"), КодСимвола("z")));
    
КонецФункции

Функция СлучайноЧисло(ГСЧ)

    Возврат ГСЧ.СлучайноеЧисло(0, 9);

КонецФункции // ()

Функция БукваИлиЦифра(ГСЧ)

     Возврат ГСЧ.СлучайноеЧисло(0, 1);

КонецФункции // ()

Коряво, может как то усложнить выбор числа или буквы. с учетом какой символ был перед этим
14 mistеr
 
21.10.16
16:52
(0) Для какой цели? Надеюсь не для паролей или подобного?
15 zladenuw
 
21.10.16
16:52
(14) Неа. только коммерция :)
16 H A D G E H O G s
 
21.10.16
16:53
(14) А что не так?
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.