使用示例:
(random 0.1) ;;結果 0.0614254
(random 999) ;;結果 597
(random -999.999) ;;結果 -392.226
代碼:
```
;;; by Serge Pashkov:
;;; This is a multiplicative generator named
;;; URAND (Universial RANDom generator) with period length 2^31 and
;;; small value of the explicit correlations (though every
;;; multiplicative generator suffers from them in more and less
;;; extent). max seed: \*max-int\*, These numbers are fine for 32-bit
;;; ints.
;;;From a file by Reini Urban - simplified
;;;Comments by Reini Urban
(defun random1 (/ seed)
(setq seed \*RANDOM-SEED\*)
(if (minusp (setq seed (+ 453816693 (\* seed 843314861))))
;; hint: divide 2^31 as 2^30+2^30
(setq seed (+ seed 1073741824 1073741824)))
(\* 4.656612873077392E-10 (setq \*RANDOM-SEED\* seed)))
;;; multiplicative rand
(defun random (n)
(cond ((\= 'int (type n)) (abs (fix (\* n (random1)))))
((numberp n) (\* n (random1)))
(t (random1))))
;;; Some generators require a special seed range.
;;; std-%get-internal-run-time will return a number between 0 and
;;; something like 86400000. (\* 24 60 60 1000)
;;; But we avoid integer overflows before calculating random,
;;; because we have no exceptions before R15.
;;; Constants:
(setq \*MAX-LONGINT\* 2147483647) ; signed longint, 32-bit
(setq \*MAX-SHORTINT\* 32767) ; signed shortint,16-bit
(setq \*MAX-INT\* (IF (minusp (1+ \*max-shortint\*)) \*MAX-LONGINT\* \*MAX-SHORTINT\*))
(defun MilliSecInt()
(fix
(rem
(fix
(\* 86400000 (\- (getvar "date")(fix (getvar "date")))))
\*max-int\*)))
(setq \*RANDOM-SEED\* (millisecint))
```
- 前言
- 概述
- autolisp簡介(初)
- 搭建編程環境
- Visual Lisp 編輯器的使用(初)
- vs code的使用
- 基本概念(初)
- 表達式
- 數據類型
- 整數類型
- 實數類型
- 字符串類型
- 列表
- 選擇集類型
- 實體名稱(ename)
- vla對象(vla-object)
- 文件描述符
- 符號和變量(初)(精)
- 源碼文件
- 變量
- 變量的類型
- 變量賦值
- 變量求值
- 預定義變量
- 數值處理
- 字符串處理
- 顯示和輸出
- 控制字符
- 列表操作
- 重點函數列表
- 尺寸標注
- 文字固定偏移
- 填充
- 填充到指定的矩形
- 計算填充面積并標注
- 其他
- 繪制任意曲線的等分線
- 原位縮放
- 修改填充基點和角度
- 批量標注多段線長度
- 統計相同直徑的圓的數量
- z坐標置0
- 生成隨機數
- 圖層
- 相交
- intersectWith無法求交點的幾種情形
- 向量和矩陣
- 向量加減乘除
- 向量長度
- 求單位向量
- 向量點積
- 向量叉積
- 命令和交互
- 調用command命令
- 多段線
- 獲取多段線頂點
- UCS
- 有關ucs的命令和系統變量
- 通過command操作ucs
- 草圖設置
- 捕捉
- 柵格
- 正交
- 對象捕捉
- 坐標系和變換(高級)
- 任意軸算法
- 坐標系
- trans
- geomcal
- autocad開發相關網站
- 小技巧匯總
- 判斷點是否在封閉圖形內
- 安裝
- acad啟動加載順序
- 安裝包制作
- 添加文件到啟動組
- 添加目錄到搜索路徑
- 對話框和圖形界面
- DCL
- openDCL
- 菜單和自定義界面
- 菜單文件
- 自定義文件
- 函數參考
- quote