免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: glq2000
打印 上一主题 下一主题

[算法] 已知一个函数f可以得到1-5间的随机数,问怎么得到1-7的随机数 [复制链接]

论坛徽章:
0
91 [报告]
发表于 2011-12-18 23:14 |只看该作者
这种问题没多大的意思,有点玩智商测试的味道,
现实的话,还是重新写一个函数,为什么非得调用那个函数啊

论坛徽章:
0
92 [报告]
发表于 2011-12-18 23:41 |只看该作者
这种问题没多大的意思,有点玩智商测试的味道,
现实的话,还是重新写一个函数,为什么非得调用那个函数啊

论坛徽章:
0
93 [报告]
发表于 2012-02-09 12:54 |只看该作者
本帖最后由 tcwm1_cu 于 2012-02-10 09:48 编辑

编辑掉自己愚昧的言论

论坛徽章:
36
子鼠
日期:2013-08-28 22:23:29黄金圣斗士
日期:2015-12-01 11:37:51程序设计版块每日发帖之星
日期:2015-12-14 06:20:00CU十四周年纪念徽章
日期:2015-12-22 16:50:40IT运维版块每日发帖之星
日期:2016-01-25 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之福建
日期:2016-04-07 11:25:2215-16赛季CBA联赛之青岛
日期:2016-04-29 18:02:5915-16赛季CBA联赛之北控
日期:2016-06-20 17:38:50技术图书徽章
日期:2016-07-19 13:54:03程序设计版块每日发帖之星
日期:2016-08-21 06:20:00
94 [报告]
发表于 2012-03-23 18:51 |只看该作者
本帖最后由 cokeboL 于 2012-03-23 18:53 编辑

论坛徽章:
0
95 [报告]
发表于 2012-03-23 19:48 |只看该作者
只要一个函数可以随机产生1和0,就可以随机产生任何数字。

论坛徽章:
0
96 [报告]
发表于 2012-03-31 18:52 |只看该作者
churchmice 发表于 2010-07-06 19:45
from
http://www.mitbbs.com/article_t/Quant/31188147.html



这个拿出了4种后还是等概率事件吗?
求解

论坛徽章:
0
97 [报告]
发表于 2012-05-17 11:25 |只看该作者
为什么17楼是正解,出现了那4中情况就忽略之?一个取随即数的函数,能出现取不到的情况吗?

论坛徽章:
0
98 [报告]
发表于 2012-05-22 16:12 |只看该作者
ethantsien 发表于 2012-05-17 11:25
为什么17楼是正解,出现了那4中情况就忽略之?一个取随即数的函数,能出现取不到的情况吗?

如果取到了那4种情况中的任何一个,就放弃重来,这实际上就相当于缩小总体的样本。
不过我不明白为什么要减少4种情况,我觉得这样更加合理:
只考虑以下7种情况分别对应1-7:
(1,1), (1,2), (1,3), (1,4), (1,5), (2,1), (2,2)
剩下的出现就全部放弃重来。和17楼的方法相比,这样就省掉了18种情况,岂不是来得更方便?

论坛徽章:
0
99 [报告]
发表于 2012-05-23 07:15 |只看该作者
f 可以产生 1-5 之间的数字,因此可以调用用 f 多次来产生 5 进制的数字,只要取某个子集作为样本空间就可得到 1-7 之间的随机数。

比如说: 应用 f 两次,得到数字 ab, 翻译成 10 进制就是 (a-1)*5+(b-1),取值范围在 [0,24],只要使用其子集 [0,6] 即可映射产生 1-7 之间的随机数,如果 (a-1)*5+(b-1) 不在[0,6] 之间,则一直重复这个过程直到 (a-1)*5+(b-1) 落在 [0,6] 之间; 当然使用子集[1,7]也可以,直接就可以不用映射了。使用更长的子集 [0,13] 让两个数字映射一个随机数也可; 17 楼的解法是使用了 长度为 21 的一个子集。如果应用 f 三次则有更多的子集可以选择;而且使用的子集越长,产生的随机数被 reject 的几率就更小。 比如应用 f 二十三次,得到数字 abcd....xyz, 转换成十进制,取值可在 [0,11920928955078124], 而如果选择子集为 [0,11920928955078121] (11920928955078121=1702989850725446*7-1),则执行一次被拒绝的概率大致为0.00000000000000025166,而应用 f 两次使用长度为21 的空间,执行一次被拒绝的概率是 0.16

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11
100 [报告]
发表于 2012-06-03 01:00 |只看该作者
只有缩小样本一种算法可行,运行7次除5在边界上有问题,不是等概率的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP