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;
                }
            }
  • 相关阅读:
    扫描与爆破
    复习与PKI技术

    IIS与FTP
    IIS与WEB
    DNS部署与安全
    DHCP服务部署与安全
    文件共享服务CIFS
    NTFS权限
    关于操作运算符的一些小练习
  • 原文地址:https://www.cnblogs.com/qiaozhoulin/p/5278171.html
Copyright © 2011-2022 走看看