gifts2017

Функция Случайное число, RANDOM, RND для 1С 7.7

Опубликовал Дмитрий Неважнов (bsturtle) в раздел Программирование - Практика программирования

В 1С нет функции случайного числа. представляю Вам свою. основана на получении идентификатора и из него случайного числа. от 0 до 10, от 0 до 100 и от 0 до 1000.

функция ПолучитьСлучайноеЧисло (ВерхняяВилка=1);

    Если
ЗагрузитьВнешнююКомпоненту("V7Plus.dll") <> 1 Тогда
       
Сообщить("Ошибка загрузки компоненты V7+");
        возврат
0;
    КонецЕсли;

   
НТТРСистИнформ = СоздатьОбъект("AddIn.V7SysInfo");

   
//получим уникальный идентификатор:
   
СлучайнаяСтрока = СокрЛП(НТТРСистИнформ.СоздатьGUID()); // вида:11CADC0A-96C4-4547-81E4-889CB89634BB

    //Суммируем коды всех символов этой случайной строки
   
Куча=1;
    для
СчетчикСимволов=1 по СтрДлина(СлучайнаяСтрока) цикл
       
куча = куча+КодСимв(Сред(СлучайнаяСтрока,СчетчикСимволов,1))*СчетчикСимволов;
    Конеццикла;

    возврат
куча % ВерхняяВилка;
конецфункции

//*******************************************
Процедура Сформировать()
   
НеБолееТысячи = 1000;
   
НеБолееСта = 100;
   
НеБолееДесяти = 10;

   
сообщить("Случайное число не более тысячи:"+ПолучитьСлучайноеЧисло(НеБолееТысячи));
   
сообщить("Случайное число не более ста:"+ПолучитьСлучайноеЧисло(НеБолееСта));
   
сообщить("Случайное число не более Десяти:"+ПолучитьСлучайноеЧисло(НеБолееДесяти));
КонецПроцедуры

Скачать файлы

Наименование Файл Версия Размер
пример использования. обработка ert 16
.ert 45,00Kb
28.09.11
16
.ert 45,00Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Тимофей Шантин (ShantinTD) 28.09.11 20:03
У нас извратились на получение "случайного" числа из
_GetPerformanceCounter();
2. Доржи Балбаров (Angeros) 29.09.11 04:56
Всегда интересовало нафига в учетной системе функция рандом?
3. Ирина Пятакова (Alraune) 29.09.11 07:56
В 1С нет функции случайного числа

в 8 есть
4. Иван Иванов (Famza) 29.09.11 08:30
(2) А распределение зарплаты?
5. Доржи Балбаров (Angeros) 29.09.11 10:18
6. Alex210 (janber) 29.09.11 11:42
Оригинально!
Хорошо бы еще для полноты картины добавить параметр "нижняя вилка"
7. Александр Лыткин (TrinitronOTV) 29.09.11 12:03
Famza пишет:

(2) А распределение зарплаты?

хорошо хоть не размер самой зарплаты
8. Victor Nespyatin (victuan) 05.10.11 16:53
И ради такой фигни загружать целую ВК?
9. vkr (vkr) 14.10.11 10:00
(2) Чтобы можно было, например, на языке 1С игрушку типа пасьянса реализовать... :D
10. Дмитрий Неважнов (bsturtle) 14.10.11 10:53
(8) victuan,

:) и стоит
ради 1С - целый Windows грузить :)))
11. Дмитрий Неважнов (bsturtle) 14.10.11 10:54
(9) vkr, А я делал эту функцию для того чтобы табели отработанного времени охранникам формировать )))
12. Доржи Балбаров (Angeros) 16.10.11 07:25
(11) Ну ну. купить среду для бизнес приложений, чтобы в пасьянс погонять. :)
13. Ruslan (flash82) 09.02.12 08:35
прикольно, буду иметь ввиду...
14. Gen Tay (GenTay) 15.02.12 22:23
Хорошая вещь, у себя реализовал прикольно.
15. Дмитрий Неважнов (bsturtle) 15.02.12 22:37
16. Кошки Рулят (Кошки рулят) 15.02.12 23:43
Фигня.
Я пользуюсь всегда вот такой функцией.
Из всех, что мне давелось попробовать, я считаю, эта дает самый хороший результат.

Перем КакоеТоЧисло;
Функция ДатьСлучайноеЧисло()
m35=34359738368;
m36=68719476736;
m37=137438953472;
КакоеТоЧисло=5*КакоеТоЧисло;
Если КакоеТоЧисло>=m37 Тогда КакоеТоЧисло=КакоеТоЧисло-m37 КонецЕсли;
Если КакоеТоЧисло>=m36 Тогда КакоеТоЧисло=КакоеТоЧисло-m36 КонецЕсли;
Если КакоеТоЧисло>=m35 Тогда КакоеТоЧисло=КакоеТоЧисло-m35 КонецЕсли;
Возврат Цел(КакоеТоЧисло/m35*101);
КонецФункции // ДатьСлучайноеЧисло()
Процедура ПриОткрытии(Настр)
КакоеТоЧисло=_GetPerformanceCounter()*_GetPerformanceCounter();
КонецПроцедуры // ПриОткрытии
Процедура СлучайноеЧисло()
СлучайноеЧисло=ДатьСлучайноеЧисло();
СлучайноеЧисло=СлучайноеЧисло%(Предел-1)+1;
КонецПроцедуры // СлучайнаяПозиция()

Таким образом получается ХорошоСлучайное число в диапазоне от 1 до Предел.
А всякие простые алгоритмы, типа GetPerformanceCounter()% Предел дают фуфло и для использования в игрушках не канают совершенно. Проверено много раз ...
17. Дмитрий Неважнов (bsturtle) 16.02.12 00:14
18. Алексей Куликов (avers007) 16.02.12 18:08
Кроме игрушек бывает еще задача сформировать код доступа куда либо. И чтобы каждый раз был новый. Так что "+"
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа