|
- .版本 2
- .支持库 spec
- .程序集 程序集1
- .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码
- 置随机数种子 ()
- _临时子程序 () ' 在初始化代码执行完毕后调用测试代码
- 返回 (0) ' 可以根据您的需要返回任意数值
- .子程序 _临时子程序
- .局部变量 随机小数, 小数型
- .计次循环首 (100, )
- 随机小数 = 取随机小数 (0, 1) ' 大于0小于1的小数
- 调试输出 (随机小数)
- .计次循环尾 ()
- .子程序 取随机小数, 小数型, 公开, 取一个范围:最小值~最大值的小数,成功返回小数,失败返回NAN
- .参数 最小值, 小数型, , 欲取随机数的最小值 (支持负数)
- .参数 最大值, 小数型, , 欲取随机数的最大值 (最小值大于最大值则交换)
- .局部变量 小数, 小数型
- .局部变量 最小值_整, 整数型
- .局部变量 最小值_指数位, 字节型, , , 范围:0~255
- .局部变量 最小值_尾数位, 整数型, , , 0~8388607
- .局部变量 最大值_整, 整数型
- .局部变量 最大值_指数位, 字节型
- .局部变量 最大值_尾数位, 整数型
- .局部变量 随机指数, 字节型
- .局部变量 随机尾数, 整数型
- .局部变量 偏移, 小数型
- .局部变量 倍数, 小数型, , , 大于1的值
- .局部变量 间距, 字节型
- .局部变量 连续, 字节型
- .判断开始 (最小值 = 最大值)
- 返回 (最大值)
- .判断 (最小值 > 最大值)
- 交换变量 (最小值, 最大值)
- .默认
- .判断结束
- .循环判断首 ()
- 倍数 = 取随机数 (1, ) ÷ 取随机数 (1, )
- .循环判断尾 (倍数 ≤ 1)
- .如果 (最小值 < 0)
- 偏移 = 最小值
- .否则
- 偏移 = 0
- .如果结束
- 最小值 = (最小值 - 偏移) ÷ 倍数
- 最大值 = (最大值 - 偏移) ÷ 倍数
- 最小值_整 = 小数_联合到整数 (最小值)
- 最大值_整 = 小数_联合到整数 (最大值)
- .如果真 (是否运算正确 (最小值) = 假 或 是否运算正确 (最大值) = 假)
- 返回 (整数_联合到小数 (2147483647))
- .如果真结束
- 最小值_指数位 = 右移 (最小值_整, 23)
- 最大值_指数位 = 右移 (最大值_整, 23)
- 最小值_尾数位 = 位与 (最小值_整, 8388607)
- 最大值_尾数位 = 位与 (最大值_整, 8388607)
- .循环判断首 ()
- 随机尾数 = 位与 (位异或 (左移 (取随机数 (, ), 7), 取随机数 (, )), 8388607)
- 间距 = 最大值_指数位 - 最小值_指数位
- .如果 (间距 ≠ 0)
- .计次循环首 (间距, )
- .如果 (取随机数 (0, 255) ≥ 128)
- 连续 = 连续 + 1
- .否则
- 跳出循环 ()
- .如果结束
- .计次循环尾 ()
- 随机指数 = 最小值_指数位 + 间距 - 连续
- .判断开始 (随机指数 = 最小值_指数位)
- 随机尾数 = 限制整数范围 (随机尾数, 最小值_尾数位, 8388607)
- .判断 (随机指数 = 最大值_指数位)
- 随机尾数 = 限制整数范围 (随机尾数, 0, 最大值_尾数位)
- .默认
- .判断结束
- .否则
- 随机指数 = 最小值_指数位
- 随机尾数 = 限制整数范围 (随机尾数, 最小值_尾数位, 最大值_尾数位)
- .如果结束
- 小数 = 整数_联合到小数 (位或 (左移 (随机指数, 23), 随机尾数))
- .循环判断尾 (小数 < 最小值 或 小数 > 最大值)
- 返回 (小数 × 倍数 + 偏移)
- .子程序 整数_联合到小数, 小数型
- .参数 整数, 整数型
- 置入代码 ({ 139, 69, 8, 201, 194, 4, 0 })
- ' mov eax,[ebp+8]
- ' leave
- ' retn 4
- 返回 (0)
- .子程序 小数_联合到整数, 整数型
- .参数 小数, 小数型
- 置入代码 ({ 139, 69, 8, 201, 194, 4, 0 })
- ' mov eax,[ebp+8]
- ' leave
- ' retn 4
- 返回 (0)
- .子程序 限制整数范围, 整数型
- .参数 数值, 整数型
- .参数 最大值, 整数型
- .参数 最小值, 整数型
- .如果真 (最大值 < 最小值)
- 交换变量 (最大值, 最小值)
- .如果真结束
- 返回 (数值 % (最大值 - 最小值 + 1) + 最小值)
复制代码 |
|