Извлечение корня
Функция Корень(Основание,Степень) Если Степень = 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; КонецФункции
|