Тема: Генератор случайных чисел.
Если ли в AutoLISP функция - генератор случайных чисел? Если нет, то как ...?
Вариант системного времени не предлагать.
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → LISP → Генератор случайных чисел.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Если ли в AutoLISP функция - генератор случайных чисел? Если нет, то как ...?
Вариант системного времени не предлагать.
[rus]1. Netu
2. Togda nikak
3. a zachem? [/rus]
Посмотри здесь
http://autolisp.ru/dwlsp/22
> *****
ехто и есть вариант системного времени
> Vitalij
Есть ли вообще функция - генератор случайных чисел, которая делает всегда уникальные числовые ряды, начинающиеся с разных значений, ряды всегда разные, но чтоб эта функция не использовала время?
Алгоритмов генерации числового ряда, с неповторяющимися значениями, много...
Но, для создания уникальности, нужно передать в программу, некоторое уникальное число, чтоб алгоритм не выдавал при каждом вызове одинаковый список!
Если знаешь такой алгоритм, скажи, я его воплощу на лиспе...
PS. Замену времени другими аналогами не предлагать! Интересен алгоритм программы, который всегда выдает разные значения...
А VBA-шный генератор в лисп исполнении не пойдёт? Не в курсе какие именно параметры для генерации используются.
(defun RndNum(minNum maxNum) (vla-eval (vlax-get-acad-object) "ThisDrawing.setVariable \"USERR5\" ,CDbl((Rnd))") ; end vla-eval (+ minNum (* (getvar "USERR5") (- maxNum minNum))) ); end RndNum
Или интересует именно алгоритм?
> {Smirnoff}
Скорее всего, виндовая генерация...
Можно ей воспользоваться с виндовой ком строки:
echo %random%
Но повторюсь, этот алгоритм, тоже использует время...
Без времени, еще не придумано алгоритмов :(
> Евгений Елпанов
Я думаю что генераторов случайных чисел не существукт как таковых во всяком случае на основе двоичной логики. Есть генераторы более или мение приближенные к этому идиалу.
А вот если взять к примеру время между действиями пользователя (щелчками мышью) в микросекундах и использовать к примеру 3 последних разряда :) Только действовать это будет медленно, а так чем не генератор случайных чисел? Если в секундах и миллисекундах при переодических действиях может наблюдаться определённая переодичность, то в разряде микросекунд не думаю. Т. к. сказать использовать квантовый компьютер который как говорят у нас в голове живёт.
> Евгений Елпанов
[rus] V AutoLispe voobshhe netu funkcii generatora
sluchajnyh chisel (gsch). Nado pisat' samomu, a pisat' ne ispol'zuja sistemnoe vremja, ja ne umeju (da i voobshhe ne proboval, a proboval by, tak tol'ko s ispol'zovaniem sistemnogo vremeni). Dumaju i v drugih jazykah programmirovanija, gde est' vstroennaja funkcija gsch, tam ona tozhe ispol'zuet sistemnoe vremja.
[/rus]
> Vitalij
Покрути такой вариант без системного времени:
(не совсем уверен, что будет работать нормально)
; by Paul Kohut (setq SeedRand 1) (defun rand (/) (setq SeedRand (+ (* (fix SeedRand) 214013) 2531011)) (boole 1 (/ SeedRand 65536) 32767) ) ; edited by Fatty (defun randomgen (num / rlst SeedRand init ncount val) (setq init (cadadr (grread (car (grread))))) (setq SeedRand (abs (fix (* 128256 (- init (fix init)))))) (setq nCount 0) (while (< nCount num) (setq val (rem (rand) num)) (if (not (member val rlst)) (progn (setq rlst (cons val rlst)) (setq nCount (+ nCount 1)) ) ) ) rlst ) ;CaLL : (defun c:test() (prompt "\n\t >> Press any key >>") (setq data (randomgen 256)) (prin1 data) )
~'J'~
> Fatty
А мне ехто не нужно, тему открыл, я думаю, пушхай он пробует . :)
> Valery
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → LISP → Генератор случайных чисел.
Форум работает на PunBB, при поддержке Informer Technologies, Inc