找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1628|回复: 0

[发布] 测试一下API 的随机数函数xdrx_math_rand是否真的随机

[复制链接]

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-9-11 12:40:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
都知道,C++的随机数生成函数是伪随机的,随机数的取得看种子取的是否合适,通过测试数据,看看xdrx_math_rand 函数的随机分布概率

  1. (defun c:tt()
  2.     (setq num (getreal "\n计算次数:"))
  3.     (setq mlst '(("0" 0)("1" 0)("2" 0)("3" 0)("4" 0)("5" 0)("6" 0)("7" 0)("8" 0)("9" 0)))
  4.     (repeat (fix num)
  5.         (setq a (xdrx_math_rand 9))
  6.         (setq old (assoc (itoa a) mlst))
  7.         (setq new (list (itoa a) (1+ (cadr old))))
  8.         (setq mlst (subst new old mlst))
  9.     )
  10.     (foreach n mlst
  11.        (princ (strcat (car n) "  次数: " (itoa (cadr n)) "  百分比: " (rtos (* 100 (/ (cadr n) num)) 2 2) "%"))
  12.        (princ "\n")
  13.     )
  14.     (princ)
  15. )



测试数据:下面测试0-9  10个数字在不同计算次数下的随机分布情况。

  1. 计算次数:100
  2. 0  次数: 8  百分比: 8%
  3. 1  次数: 17  百分比: 17%
  4. 2  次数: 5  百分比: 5%
  5. 3  次数: 4  百分比: 4%
  6. 4  次数: 26  百分比: 26%
  7. 5  次数: 5  百分比: 5%
  8. 6  次数: 11  百分比: 11%
  9. 7  次数: 10  百分比: 10%
  10. 8  次数: 6  百分比: 6%
  11. 9  次数: 8  百分比: 8%

复制代码

  1. 计算次数:1000
  2. 0  次数: 50  百分比: 5%
  3. 1  次数: 118  百分比: 11.8%
  4. 2  次数: 113  百分比: 11.3%
  5. 3  次数: 87  百分比: 8.7%
  6. 4  次数: 107  百分比: 10.7%
  7. 5  次数: 152  百分比: 15.2%
  8. 6  次数: 64  百分比: 6.4%
  9. 7  次数: 63  百分比: 6.3%
  10. 8  次数: 156  百分比: 15.6%
  11. 9  次数: 90  百分比: 9%

复制代码

  1. 计算次数:10000
  2. 0  次数: 889  百分比: 8.89%
  3. 1  次数: 1113  百分比: 11.13%
  4. 2  次数: 906  百分比: 9.06%
  5. 3  次数: 1013  百分比: 10.13%
  6. 4  次数: 1182  百分比: 11.82%
  7. 5  次数: 882  百分比: 8.82%
  8. 6  次数: 1041  百分比: 10.41%
  9. 7  次数: 1150  百分比: 11.5%
  10. 8  次数: 897  百分比: 8.97%
  11. 9  次数: 927  百分比: 9.27%

复制代码

  1. 计算次数:100000
  2. 0  次数: 10011  百分比: 10.01%
  3. 1  次数: 10055  百分比: 10.06%
  4. 2  次数: 10227  百分比: 10.23%
  5. 3  次数: 9910  百分比: 9.91%
  6. 4  次数: 9940  百分比: 9.94%
  7. 5  次数: 9906  百分比: 9.91%
  8. 6  次数: 10156  百分比: 10.16%
  9. 7  次数: 9317  百分比: 9.32%
  10. 8  次数: 10362  百分比: 10.36%
  11. 9  次数: 10116  百分比: 10.12%

复制代码

  1. 计算次数:1000000
  2. 0  次数: 99153  百分比: 9.92%
  3. 1  次数: 100796  百分比: 10.08%
  4. 2  次数: 100943  百分比: 10.09%
  5. 3  次数: 98853  百分比: 9.89%
  6. 4  次数: 100936  百分比: 10.09%
  7. 5  次数: 99971  百分比: 10%
  8. 6  次数: 99285  百分比: 9.93%
  9. 7  次数: 99677  百分比: 9.97%
  10. 8  次数: 100492  百分比: 10.05%
  11. 9  次数: 99894  百分比: 9.99%

复制代码
可以看出,随着采样次数的数量级增加,10万级以上的,基本都在9.9-10范围内了,可以看出API随机函数里面的种子算法还是”很“随机的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-3-29 23:34 , Processed in 0.172257 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表