Программирование в 1СПятница, 19.04.2024, 03:05

| RSS
Главная | Каталог статей
Меню сайта

Категории раздела
Основы [36]
Общие вопросы по 1С 7.7 [88]
1С: Бухгалтерия 7.7 [7]
1С: Торговля 7.7 [4]
1С:Зарплата и кадры 7.7 [1]
1С 7.7: Проблемы и решения [33]
УРБД [3]
Управление Распределенными Базами Данных
OLE [2]
Механизм обмена данными между базами 1С через OLE
SQL [1]
Сервер терминалов [1]
Интеграция с внешними приложениями [3]
FAQ по 1С v.7.7 [7]
FAQ по 1С v.7.7

Поиск

Поиск по сайту

Главная » Статьи » 1С v.7.7 » Основы

Основы. Извлечение корня, Случайные числа
Извлечение корня
 
Функция Корень(Основание,Степень)
Если Степень = 1 Тогда
Возврат(Основание);
КонецЕсли;
Факториал = 1; Степень_ = 1; Сум = 0;
СтепеньЕ = 1/Степень*Лог(Основание);
Для ии = 1 По 28 Цикл
Факториал = Факториал * ии;
Степень_ = Степень_ * СтепеньЕ;
Сум = Сум + Степень_/Факториал;
КонецЦикла;
Возврат(1+Сум);
КонецФункции
 
Случайные числа

Перем RandSeed;
Процедура Randomize()
Перем h,m,s;
ТекущееВремя(h,m,s);
RandSeed=h*24+m*60+s;
КонецПроцедуры

Функция Random(n) Экспорт
RandSeed=(13*RandSeed+13849)%65536;
Возврат ((RandSeed%n)+1);
КонецФункции

Процедура Сформировать()
Randomize();
Для нс=1 По 20 Цикл
Сообщить(Random(10));
КонецЦикла;
КонецПроцедуры
Или еще вариант:

Ранд=_GetPerformanceCounter()%(х+1); //х – предел значения случайного числа от 0 до х;

Вот очень качественный алгоритм от комитета ANSI-C. Работает правда медленнее чуть-чуть, чем те, что выше, зато последовательности выдает просто замечательные.
_getPerformanceCounter() для совместимости с “1С:Совместимо” можно заменить на то, что выше.

var randSeed export;
// **************
function randomize() export
randSeed=_getPerformanceCounter();
endFunction

// **************
function random(n) export
randSeed=randSeed*1103515245+12345;
return ((randSeed/65536)%32768)%n+1;
endFunction

И ещё один алгоритм:

Перем GlSeed;
//———————————————
//Алгоритм 133a (Алгоритмы выпуск ?4 под редакцией Агеева. Вычислительный центр АН СССР. 1967)

Функция СлучайноеЧисло(N)
m35=34359738368;
m36=68719476736;
m37=137438953472;
GlSeed=5*GlSeed;
Если GlSeed>=m37 Тогда GlSeed=GlSeed-m37 КонецЕсли;
Если GlSeed>=m36 Тогда GlSeed=GlSeed-m36 КонецЕсли;
Если GlSeed>=m35 Тогда GlSeed=GlSeed-m35 КонецЕсли;
Возврат Цел(GlSeed/m35*N)+1;
КонецФункции
Категория: Основы | Добавил: Spacer (24.05.2008)
Просмотров: 3014 | Комментарии: 1
Всего комментариев: 1
1 nado_hto  
0
СпасибиЩе!

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Статистика

    Copyright 1C:Programmer © 2024
    Бесплатный конструктор сайтов - uCoz