Реклама i
Стань нашим партнером - зарабатывай с нами!
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Библиотека функций > DwgRuLispLib: Генератор случайных чисел

DwgRuLispLib: Генератор случайных чисел

Ответ
Поиск в этой теме
Непрочитано 07.12.2007, 15:12 #1
DwgRuLispLib: Генератор случайных чисел
VVA
 
Инженер LISP
 
Минск
Регистрация: 11.05.2005
Сообщений: 6,990

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
Просмотров: 29317
 
Непрочитано 07.12.2007, 16:31
#2
Jerald

Конструктор
 
Регистрация: 04.04.2007
Киев
Сообщений: 536


А генератора случайного слова из указанного списка у тебя случайно нету?
Jerald вне форума  
 
Автор темы   Непрочитано 07.12.2007, 17:05
#3
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Генератор случайного слова
Код:
[Выделить все]
;;;Список слов
(setq Dict '("Я" "пришел" "к" "тебе" "с" "приветом," "рассказать," "что" "солнце" "встало"))
(repeat 5
  (princ "\nСлучайное слово: ")
  (princ
    (nth
      (dwgru-random-range 0 (1- (length Dict)))
      Dict
      )
    )
  (princ)
  )
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 07.12.2007, 17:11
#4
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Кстати нашел еще в загашниках
Код:
[Выделить все]
 
;;; by Paul Kohut
;|
 (rand);_> 21753
 (rand);_> 3920
|;
(defun rand ( )
  (if (null *SeedRand*)(setq *SeedRand* (getvar "DATE")))
  (setq *SeedRand* (+ (* (fix *SeedRand*) 214013) 2531011))
  (boole 1 (/ *SeedRand* 65536) 32767)
)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 07.12.2007, 17:18
#5
Jerald

Конструктор
 
Регистрация: 04.04.2007
Киев
Сообщений: 536


Цитата:
Сообщение от VVA Посмотреть сообщение
Генератор случайного слова
Код:
[Выделить все]
;;;Список слов
(setq Dict '("Я" "пришел" "к" "тебе" "с" "приветом," "рассказать," "что" "солнце" "встало"))
(repeat 5
  (princ "\nСлучайное слово: ")
  (princ
    (nth
      (dwgru-random-range 0 (1- (length Dict)))
      Dict
      )
    )
  (princ)
  )
Это работает только в Автокаде? Может есть отдельная прога, или мож знаешь, где лежит?
Jerald вне форума  
 
Автор темы   Непрочитано 07.12.2007, 17:24
#6
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Не знаю про отдельную прогу, но алгоритм здесь простейший. Думаю не составит большого труда перепичать его на другом языке. К сожалению, пока владею только русским, LISP'ом и матным
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 07.12.2007, 19:24
#7
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от Jerald Посмотреть сообщение
Это работает только в Автокаде? Может есть отдельная прога, или мож знаешь, где лежит?
на такие случаи, есть переменная в винде..
т.е. запроси в виндовой ком строке
Код:
и получишь длинное целое.

Последний раз редактировалось Елпанов Евгений, 07.12.2007 в 20:04. Причина: добавил теги
Елпанов Евгений вне форума  
 
Непрочитано 04.01.2008, 00:32
#8
Jerald

Конструктор
 
Регистрация: 04.04.2007
Киев
Сообщений: 536


Мне нужно нечто вроде виртуальной колоды карт, только пустой, что бы я сам мог подписывать названия "карт"!?
Jerald вне форума  
 
Автор темы   Непрочитано 05.03.2008, 17:45
#9
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Еще лиспик в копилку. Выложил Пастух здесь
Цитата:
Функция генерации псевдослучайной последовательности целых 16-и битных чисел.
Аргумент: положительное целое число в диапазоне от 0 до 65535.
Возврат: псевдослучайное целое число.
Пример вызова: (rnd16bit 0)
Если полученное число использовать в качестве аргумента для следующего вызова rnd16bit, то в результате можно получить
последовательность неповторяющихся псевдослучайных чисел с периодом 65536.
См. Шевкопляс Б.В Микропроцессорные структуры. Инженерные решения: Справочник., М.: Радио и связь, 1990 г. (стр. 492)
Код:
[Выделить все]
(defun rnd16bit (reg; регистр сдвига.
     /
     dc_out; выходное значение дешифратора.
     m2_out; выходное значение сумматора по модулю 2.
     )
  (setq reg (logand reg 65535)); страж: оставляем 16 младших разрядов.
  (setq
    dc_out (if (or (= reg 21844) (= reg 21845)) 1 0)
    m2_out (boole 6 (logand reg 1) (if (zerop (logand reg 2)) 0 1) (if (zerop (logand reg 4)) 1 0) dc_out)
  )
  (setq reg (lsh reg -1))
  (if (zerop m2_out)
    reg; return.
    (logior reg 32768); return.
  ); end if.
); end defun.
Цитата:
P.S.
Данный метод генерации (реализуемый аппаратно с исользованием регистра сдвига) использовался лет 20 назад в радиолокации для генерации фазоманипулированных шумоподобных сигналов.
Как сейчас дела обстоят — не знаю.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 17.02.2012, 16:27
#10
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


_dwgru-random из поста #1 имеет один неприятный недостаток:
Код:
[Выделить все]
 (setq *DWGRU_SEED* nil)
(_dwgru-random)
этот код всегда вернет что-то примерно равное 0,8.
То есть при первом запуске функции, значение около 0,8 гарантированно 100%. Для рандома как-то не очень.
Do$ вне форума  
 
Непрочитано 24.11.2012, 16:18
#11
Faeton


 
Регистрация: 20.05.2008
Сообщений: 9


2 функции из первого поста отказываются работать

прочитал как пользоваться лиспом
функция OFF2 работает отлично

при запуске _dwgru-random выдавало
no function definition:
запустил
(vlax-get-acad-object)
выдало Неизвестная команда "DWGRU-RANDOM". Для вызова справки нажмите F1.

либо может есть более простой способ заполнить столбец таблицы случайныйми значениями в определенном интервале 22,3-39,7

пробовал через VBA, но так и не разобрался как обратится к определенному диапазону в определенной таблице.
Faeton вне форума  
 
Непрочитано 24.11.2012, 16:59
#12
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


смотрите какие аргументы функции и какой обработчик ошибок у вас в данный момент
gomer вне форума  
 
Непрочитано 24.11.2012, 17:30
#13
Faeton


 
Регистрация: 20.05.2008
Сообщений: 9


к сожалению в лиспе я не понимаю ни одной строчки
Faeton вне форума  
 
Непрочитано 24.11.2012, 17:43
#14
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Faeton Посмотреть сообщение
к сожалению в лиспе я не понимаю ни одной строчки
ну тады лом вам в руки или чо конкретно вы хотели получить?
gomer вне форума  
 
Непрочитано 24.11.2012, 18:04
#15
Faeton


 
Регистрация: 20.05.2008
Сообщений: 9


в экселе есть столбец с 15 ячейками его необходимо вставить в 15 ячеек автокадовской таблицы. (при простом копировании он все значения загоняет в одну ячейку)
в идеале нужно чтобы в автокадовской таблице (в определенном столбеце из 15 ячеек) при запуске команды 15 ячеек автоматически заполнялись случайными числами в диапазоне от 21.1 до 35.7 (диапозон может меняться)
Faeton вне форума  
 
Непрочитано 11.03.2013, 20:26
#16
AY

webcad.pro
 
Регистрация: 06.01.2005
Московская обл.
Сообщений: 501


Так к слову пришлось, вроде бы в DOSLib был генератор случайных чисел, на случай если кому-то покажется он более удобным.
AY вне форума  
 
Непрочитано 11.03.2013, 21:21
#17
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


DosLib написан на arx, так что возникает вопрос с версией и разрядностью.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Библиотека функций > DwgRuLispLib: Генератор случайных чисел

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Учет случайных отклонений длин стержней torf_83 Прочее. Архитектура и строительство 9 13.12.2006 09:45
Генератор случайных чисел на Lisp Cleper Прочее. Программное обеспечение 22 13.08.2006 19:03