无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 9541|回复: 20
打印 上一主题 下一主题

[求助] 批处理里面概率执行

[复制链接]
1#
发表于 2017-12-28 21:28:52 | 显示全部楼层
回复

使用道具 举报

2#
发表于 2017-12-28 23:02:27 | 显示全部楼层
太长了
  1. if %random:~1,1% EQU 1 ( echo 1 ) else (echo 9)
复制代码

点评

你这不成功,我双击了30多次,都是9……  详情 回复 发表于 2017-12-28 23:25
回复

使用道具 举报

3#
发表于 2017-12-28 23:29:30 | 显示全部楼层
nttwqz 发表于 2017-12-28 23:25
你这不成功,我双击了30多次,都是9……


扔5次硬币都是正面,能说扔硬币不是50%概率么?

随机一个数,末尾是1的概率是多少?

点评

我双击了30多次,实际效果胜过所有道理! 手动输入你的代码也是这样。 C:\>echo %random:~1,1% 5 C:\>echo %random:~1,1% 5 C:\>echo %random:~1,1% 8 C:\>echo %random:~1,1% 8 C:\>echo %ra  详情 回复 发表于 2017-12-28 23:52
回复

使用道具 举报

4#
发表于 2017-12-29 00:08:44 | 显示全部楼层
本帖最后由 slore 于 2017-12-29 00:23 编辑
  1. Microsoft Windows [版本 10.0.15063]
  2. (c) 2017 Microsoft Corporation。保留所有权利。

  3. C:\Users\MyPC>echo %random:~1,1%
  4. 1

  5. C:\Users\MyPC>echo %random:~1,1%
  6. 4

  7. C:\Users\MyPC>echo %random:~1,1%
  8. 2

  9. C:\Users\MyPC>echo %random:~1,1%
  10. 6

  11. C:\Users\MyPC>echo %random:~1,1%
  12. 5

  13. C:\Users\MyPC>echo %random:~1,1%
  14. 7

  15. C:\Users\MyPC>echo %random:~1,1%
  16. 2

  17. C:\Users\MyPC>echo %random:~1,1%
  18. 5

  19. C:\Users\MyPC>echo %random:~1,1%
  20. 7

  21. C:\Users\MyPC>echo %random:~1,1%
  22. 4

  23. C:\Users\MyPC>echo %random:~1,1%
  24. 1

  25. C:\Users\MyPC>
复制代码


这个结果,如果你想看的不是1,而是8或者9,是不是又说不通了?(没出现概率为0)
回复

使用道具 举报

5#
发表于 2017-12-29 00:22:15 | 显示全部楼层
random得到的是0~65535
取第一位
0出现的概率为1/65535,其他数字是1/9,所以1:9的概率的话是不对的(1:8)。取-2,-1来去最后一位才对。

1位数 0~9                 1/10
2位数 10~99               1/10
3位数  100~999           1/10
4位数  1000~9999       1/10
5位数  10000~65529  1/10
5位数   65530,65531,65532,65533,65534,65535,没有6,7,8,9所以,0~5比他们高1/65535的概率,但是按1/10来说完全可以忽略。
另外,系统的随机一般是按时间种子计算,你可以控制调用间隔,结果会变化,但是你执行更多次(千,万级),次数越多越接近。

反正要的是个“随机”,要是在这个上面钻牛角尖的话,我也无话可说。

点评

我数学学的不好,更没研究过概率,但从实际双击执行来看,不知的更加接近1/10。 我就觉得吧,你只取第二位数,怎么算出来0出现的概率是1/10呢?要是0-9,每个数字出现的概率是一样的,这容易理解。 话说,为何  详情 回复 发表于 2017-12-29 00:45
回复

使用道具 举报

6#
发表于 2017-12-29 00:57:55 | 显示全部楼层

u

本帖最后由 slore 于 2017-12-29 09:12 编辑
nttwqz 发表于 2017-12-29 00:45
我数学学的不好,更没研究过概率,但从实际双击执行来看,不知的更加接近1/10。

我就觉得吧,你只取第 ...


我是想取最后一位的,又想了想随便一个数就取开头也一样吧。就随意写了1,1。
就是个1行文的思路,就和我第一个回复帖只写%random%,一样,让楼主自己去了解这个用法,
没有详细思考,那是使用的人该考虑和测试的事情(我又没有这种需求)。

批处理的话,从0开始,所以结果是你说的第2位。
如果随机数是1,2,3呢?没有第二位,会报错的。取第二位是错误的。

版本不一样,系统改了吧(也许首位有溢出BUG修复掉了,另外WIN10也是32767),还是,求余吧。(按10求余,其实也是去最后一位(个位),不是绝对1/10)

32767*2=?


点评

都是夜猫子……  详情 回复 发表于 2017-12-29 01:00
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-9-20 20:39

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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