使用示例:
(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