马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
都知道,C++的随机数生成函数是伪随机的,随机数的取得看种子取的是否合适,通过测试数据,看看xdrx_math_rand 函数的随机分布概率
- (defun c:tt()
- (setq num (getreal "\n计算次数:"))
- (setq mlst '(("0" 0)("1" 0)("2" 0)("3" 0)("4" 0)("5" 0)("6" 0)("7" 0)("8" 0)("9" 0)))
- (repeat (fix num)
- (setq a (xdrx_math_rand 9))
- (setq old (assoc (itoa a) mlst))
- (setq new (list (itoa a) (1+ (cadr old))))
- (setq mlst (subst new old mlst))
- )
- (foreach n mlst
- (princ (strcat (car n) " 次数: " (itoa (cadr n)) " 百分比: " (rtos (* 100 (/ (cadr n) num)) 2 2) "%"))
- (princ "\n")
- )
- (princ)
- )
测试数据:下面测试0-9 10个数字在不同计算次数下的随机分布情况。
- 计算次数:100
- 0 次数: 8 百分比: 8%
- 1 次数: 17 百分比: 17%
- 2 次数: 5 百分比: 5%
- 3 次数: 4 百分比: 4%
- 4 次数: 26 百分比: 26%
- 5 次数: 5 百分比: 5%
- 6 次数: 11 百分比: 11%
- 7 次数: 10 百分比: 10%
- 8 次数: 6 百分比: 6%
- 9 次数: 8 百分比: 8%
复制代码
- 计算次数:1000
- 0 次数: 50 百分比: 5%
- 1 次数: 118 百分比: 11.8%
- 2 次数: 113 百分比: 11.3%
- 3 次数: 87 百分比: 8.7%
- 4 次数: 107 百分比: 10.7%
- 5 次数: 152 百分比: 15.2%
- 6 次数: 64 百分比: 6.4%
- 7 次数: 63 百分比: 6.3%
- 8 次数: 156 百分比: 15.6%
- 9 次数: 90 百分比: 9%
复制代码
- 计算次数:10000
- 0 次数: 889 百分比: 8.89%
- 1 次数: 1113 百分比: 11.13%
- 2 次数: 906 百分比: 9.06%
- 3 次数: 1013 百分比: 10.13%
- 4 次数: 1182 百分比: 11.82%
- 5 次数: 882 百分比: 8.82%
- 6 次数: 1041 百分比: 10.41%
- 7 次数: 1150 百分比: 11.5%
- 8 次数: 897 百分比: 8.97%
- 9 次数: 927 百分比: 9.27%
复制代码
- 计算次数:100000
- 0 次数: 10011 百分比: 10.01%
- 1 次数: 10055 百分比: 10.06%
- 2 次数: 10227 百分比: 10.23%
- 3 次数: 9910 百分比: 9.91%
- 4 次数: 9940 百分比: 9.94%
- 5 次数: 9906 百分比: 9.91%
- 6 次数: 10156 百分比: 10.16%
- 7 次数: 9317 百分比: 9.32%
- 8 次数: 10362 百分比: 10.36%
- 9 次数: 10116 百分比: 10.12%
复制代码
- 计算次数:1000000
- 0 次数: 99153 百分比: 9.92%
- 1 次数: 100796 百分比: 10.08%
- 2 次数: 100943 百分比: 10.09%
- 3 次数: 98853 百分比: 9.89%
- 4 次数: 100936 百分比: 10.09%
- 5 次数: 99971 百分比: 10%
- 6 次数: 99285 百分比: 9.93%
- 7 次数: 99677 百分比: 9.97%
- 8 次数: 100492 百分比: 10.05%
- 9 次数: 99894 百分比: 9.99%
复制代码 可以看出,随着采样次数的数量级增加,10万级以上的,基本都在9.9-10范围内了,可以看出API随机函数里面的种子算法还是”很“随机的。
|