免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: glq2000

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

论坛徽章:
0
发表于 2010-09-17 21:50 |显示全部楼层
回复 76# gcd0318


    因为舍弃的概率是0.16,如果正好落到了这个概率那么就舍弃,这样,连续出现舍弃的概率是很小的,连续舍弃3次的概率为0.004096。。。。

不好意思 最近没上cu 回复的晚了:wink:

论坛徽章:
0
发表于 2010-09-27 15:36 |显示全部楼层
同上

论坛徽章:
0
发表于 2011-01-29 02:31 |显示全部楼层
运行7次除以5。。。行不行???

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
发表于 2011-01-29 08:50 |显示全部楼层
本帖最后由 cjaizss 于 2011-02-15 23:10 编辑

我越来越倾向于这是一个抽象代数题,答案是得不到吧,需要建模吧.
作为面试题似乎不太合适
还是补全这个说明吧:取部分样本来作为样本空间的做法……可能永远不会结束,不同于我们平常所说的算法。

论坛徽章:
0
发表于 2011-01-29 09:56 |显示全部楼层

论坛徽章:
0
发表于 2011-02-15 23:03 |显示全部楼层
顶三楼。

论坛徽章:
0
发表于 2011-11-30 11:25 |显示全部楼层
本帖最后由 lbiiun 于 2011-11-30 11:26 编辑

把随机生成的1~5减一,得到等概率的0~4。  运算7次加起来 % 5。 变成0~6的随机值。 再加一。  取得1~7的随机值。
g++ -o rand rand.cpp
[root@rhel5 test]# ./rand      
19991809 20002464 19996255 20002461 20007011
2040299 2041333 2041300 2040076 2041494 2041305 2039907
[root@rhel5 test]# cat rand.cpp
#include <iostream>
#include <cstdlib>

using namespace std;


int main()
{
    int   r = 0;
    int   i = 0;
    int   j = 0;
    int   s = 0;
    unsigned long a5[5] = {0};
    unsigned long a7[7] = {0};

    for (i = 0; i < 100000000; i++)
    {
        r = rand() % 5;
        a5[r]++;
        s += r;
        if (++j >= 7)
        {
            j = 0;
            s %= 7;
            a7++;
        }
    }
    for (i = 0; i < 5; i++)
        cout << a5 << " ";
    cout << endl;

    for (i = 0; i < 7; i++)
        cout << a7 << " ";
    cout << endl;
    return 0;
}
这段结果在一定程度上说明了生成的1~7是等概率的。

虽然五次运算结果加起来不是等概率的。但我感觉
0 + 7 + 14 + 21 +28
1 + 8 + 15 + 22 + 29
....

这七组概率分别加起来,概率应该是相等的。

论坛徽章:
1
水瓶座
日期:2014-03-20 18:21:14
发表于 2011-12-16 22:45 |显示全部楼层
F()7次相加,结果写成7进制数,然后只取个位就可以了

论坛徽章:
0
发表于 2011-12-16 22:52 |显示全部楼层
回复 3# iamxmz


    3L正解,(f()+f()+f()+f()+f()+f()+f()-1)/5+1即可

论坛徽章:
1
天秤座
日期:2014-04-27 07:42:20
发表于 2011-12-17 18:07 |显示全部楼层
本帖最后由 A.com 于 2011-12-17 18:23 编辑

嗯,这个无解
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会

【架构革新 高效可控】2020年12月21日-23日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP