zoukankan      html  css  js  c++  java
  • 一道概率算法题

    1我一个同学电话面试阿里实习生遇到的一道概率题:

    有个函数foo,返回0和1的概率都是50%,让你自己写一个函数,使返回0和1的概率分别是30%和70%。

    这道题乍一看不知道咋下手,其实还很简单的,相当于利用了遗传算法的思想,每次产生一个数字,然后以为,一共产生四个数字,这样就可以得到一个四位的数字,即0~16,只要这个数字大于等于10就抛弃,这样产生0~9的数字,而且0~9的数字出现的概率是随机的,这样,0~2返回0,3~9返回1,这样,就满足了题目要求。

    2 此题的反变换。有道题说的是有个函数foo,返回0的概率是60%,返回1的概率是40%,让你自己写一个函数,使返回0和1的概率是50%,

    用前面说的foo函数实现,不能用像c++里面的rand这类的函数,怎么解?

    网上看到某个牛人的答案,如下:

    我的直觉,太简单了,调用foo两次即可,
    连续两次,出现 0 1 和 1 0 的概率是一样的,于是就能构造出50%
    (两次返回 0 0 或 1 1的结果丢掉,重新调用)

    返回0 1 -> 当作 0
    返回1 0 -> 当作 1

    代码简单的要屎,如下

            int half01()
            {
                while(1)
                {
                    int a = foo();
                    int b = foo();
              
                    if(a != b) return a;
                }
            }
  • 相关阅读:
    实验四 主存空间的分配和回收
    学期总结
    实验三 进程调度模拟程序
    团队项目
    博客参考评论
    dos系统
    学习进度条
    了解和熟悉操作系统
    问题的思考和回答
    Python-关于脚本和冒泡算法
  • 原文地址:https://www.cnblogs.com/qiaozhoulin/p/5278171.html
Copyright © 2011-2022 走看看