PORTA.ru - on-line магазин ПОРТАтивной техники.PORTA.ru - on-line магазин ПОРТАтивной техники.

Новости
Мои разработки
FAQ
Ссылки
Форум

Случайные числа

Перем 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 до х;
<сообщил Bozgalev>


Вот, имхо, очень качественный алгоритм от комитета ANSI-C
перевод на 1с мой :)
работает правда медленнее чуть-чуть, чем те, что выше, зато последовательности выдает просто замечательные.
_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
 

<сообщил avb>

И ещё один алгоритм:
Перем 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;
КонецФункции

<сообщил Soaron>

- Наверх -

В качестве благодарности за решение проблемы, щелкните здесь.
Поддержите развитие сайта.
Спасибо!
Автор и разработчик: Кайгородов Андрей aka mszsuz. mszsuz@online.sinor.ru ICQ#33993114. Дата последнего обновления страницы: Friday 09.04.2004 16:52
1C:TOP-100 Рейтинг ресурсов 1С
Hosted by uCoz