Schöck
Показать сообщение отдельно
Непрочитано 07.12.2007, 15:12 #1
DwgRuLispLib: Генератор случайных чисел
VVA
 
Инженер LISP
 
Минск
Регистрация: 11.05.2005
Сообщений: 6,787

2 функции.
_dwgru-random - Генерирует случайное вещественное число в диапазоне от 0 до 1
dwgru-random-range - Генерирует случайное число из указанного диапазона целых чисел


Код:
[Выделить все]
;;; ************************************************************************
;;; * Библиотека DWGruLispLib Copyright ©2007  DWGru Programmers Group
;;; *
;;; * _dwgru-random
;;; *
;;;  На основе vk_RandNum
;;;  http://www.caduser.ru/forum/index.ph...D=23&TID=32763
;;; *
;;; *
;;; * 07/12/2007 Версия 0001.  Редакция Владимир Азарко (VVA)
;;; ************************************************************************
(defun _dwgru-random (/ modulus multiplier increment)
;;; Генерирует случайное вещественное число в диапазоне от 0 до 1
;;; Используется глобальная переменная *DWGRU_SEED*
  (if (not *DWGRU_SEED*)
    (setq *DWGRU_SEED* (getvar "DATE"))
  )
  (setq  modulus     65536
  multiplier 25173
  increment  13849
  *DWGRU_SEED*     (rem (+ (* multiplier *DWGRU_SEED*) increment) modulus))
  (/ *DWGRU_SEED* modulus)
)
 
;;; ************************************************************************
;;; * Библиотека DWGruLispLib Copyright ©2007  DWGru Programmers Group
;;; *
;;; * dwgru-random-range
;;; *
;;; * 07/12/2007 Версия 0001.  Редакция Владимир Азарко (VVA)
;;; ************************************************************************
(defun dwgru-random-range (Minnum Maxnum )
;;; Генерирует случайное число из указанного диапазона целых чисел
;;; Использует функцию библиотеки
    ;;;                 _dwgru-random
    ;;; Параметры: 
    ;;; Minnum - минимальное целое число
    ;;; Maxnum - максимальное целое число
    ;;; Возврат:
    ;;;   целое число из указанного диапазона
 
    ;;; Пример:
  ;|
  (DWGRU-NUM-RANDOM-RANGE 1 15) ;_Результат 3
  (DWGRU-NUM-RANDOM-RANGE 1 15) ;_Результат 10
  |;
;(- Maxnum (atoi (rtos (* (- Maxnum Minnum) (_dwgru-num-random)) 2 0))) ;_Comment VVA 07.12.2007 Было так
;;;Comment VVA http://forum.dwg.ru/showpost.php?p=798277&postcount=9
;;;(- Maxnum (fix (* (- Maxnum Minnum) (_dwgru-random)))) ;_Add VVA 07.12.2007 Так наверное быстрее
;;;
(- Maxnum (fix (* (- Maxnum Minnum -1) (_dwgru-random)))) ;;;Vov.ka http://forum.dwg.ru/showpost.php?p=798277&postcount=9
)
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 09.05.2012 в 19:20. Причина: http://forum.dwg.ru/showpost.php?p=798277&postcount=9
Просмотров: 20562
 
Еврокод EN. Базовый Видеокурс
Размещение рекламы