免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
11 [报告]
发表于 2010-07-06 19:14 |只看该作者
f()运行7次加起来模7呢?我写个程序试试..

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-05-27 06:20:00
12 [报告]
发表于 2010-07-06 19:19 |只看该作者
回复 9# iamxmz


    恩 得到7的概率是7个1/5相乘, 而不是1/7. 我再怀疑这个题是不是没有解啊 但又证明不了。。。。。。

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-05-27 06:20:00
13 [报告]
发表于 2010-07-06 19:21 |只看该作者
回复 11# iamxmz


    模7的话有可能为0。。 而要求是 等概率的返回1-7,不包括0

    ps, 好变态的题啊

论坛徽章:
0
14 [报告]
发表于 2010-07-06 19:22 |只看该作者
回复 9# iamxmz

嗯,的确那样产生是有问题的,我想想

论坛徽章:
0
15 [报告]
发表于 2010-07-06 19:25 |只看该作者
rand() * (7/5)

论坛徽章:
0
16 [报告]
发表于 2010-07-06 19:26 |只看该作者
回复  iamxmz


    模7的话有可能为0。。 而要求是 等概率的返回1-7,不包括0

    ps, 好变态的题 ...
glq2000 发表于 2010-07-06 19:21



    我简略了一步而已,要得到A-B之间的数都是模(B-A+1)然后加A的,具体到这个题上就是模7然后+1.

最新结果,分布还是不平均,误差在0.2%左右.

论坛徽章:
0
17 [报告]
发表于 2010-07-06 19:45 |只看该作者
本帖最后由 churchmice 于 2010-07-06 19:47 编辑

from
http://www.mitbbs.com/article_t/Quant/31188147.html

基本方法就是产生一串序列
1,4,5,3,2,4
然后前后两两划分为一组,比如(1,4),(5,3),因为总共有5X5 =25种等概率的可能,不能被7整除,可以拿掉4种,这样剩下21种,编号为#1,#2,...#21
如果出现#1,#2,#3则输出1,....如果出现#19,#20,#21则输出7,如果出现了被拿掉的那4种情况则忽略之

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-05-27 06:20:00
18 [报告]
发表于 2010-07-06 20:05 |只看该作者
17楼是正解, 多谢 churchmice  iamxmz等人的解答 ~~~~~~~~

论坛徽章:
0
19 [报告]
发表于 2010-07-07 13:26 |只看该作者
17楼的怎么证明呢,总觉得有点怪.

1*1 的概率明显小于 1*3 + 3*1的概率
生成的1-25这25个数据等概率是怎么证明

论坛徽章:
1
射手座
日期:2013-08-21 13:11:46
20 [报告]
发表于 2010-07-07 13:30 |只看该作者
from


基本方法就是产生一串序列
1,4,5,3,2,4
然后前后两两划分为一组,比如(1,4),(5,3),因为总共有 ...
churchmice 发表于 2010-07-06 19:45


恩,这个NB
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP