Python以一定的概率生成某个数

笔试巧用随机数

一个鸡贼的技巧,注意那些输出为「二值」的题目,二值就是类似布尔值,或者 0 和 1 这种组合有限的。

比如说很多题目是这样,巴拉巴拉给你说一堆条件,然后问你输入的数据能不能达成这些条件,如果能的话请输出 YES,不能的话输出 NO

如果你会做当然好,如果不会做怎么办?

首先这样提交一下:

print("YES")

看下 case 通过率,假设是 60%,那么说明结果为 YES 有 60% 的概率,所以可以这样写代码:

import random
def number_of_certain_prob(seq, prob):
    x = random.uniform(0, 1)
    cumulative_prob = 0.0
    for item, item_prob in zip(seq, prob):
        cumulative_prob += item_prob
        if x < cumulative_prob:
            break
    return item

if __name__ == '__main__':
    # 测试代码
    seq = ["yes", "no"]
    prob = [0.6, 0.4]
    res = number_of_certain_prob(seq, prob)
    print(res)

验证如下

if __name__ == '__main__':
    # 测试代码
    seq = ["yes", "no"]
    prob = [0.6, 0.4]
    a = 0
    b = 0
    repeat = 100000
    for i in range(repeat):
        result = number_of_certain_prob(seq, prob)
        if result == "yes":
            a = a + 1
        elif result == "no":
            b = b + 1
    
    print(a / repeat)
    print(b / repeat)

输出:

0.60252
0.39748

参考:

  1. 关于算法笔试,labuladong 说点套路
  2. Python以一定的概率生成某个数
全部评论

相关推荐

09-22 09:42
门头沟学院 Java
牛客37185681...:马德,我感觉这是我面过最恶心的公司,一面是两个女hr,说什么实习前几个月属于试用期,试用期过了才能转成正式实习生,我***笑了,问待遇就是不说,问能不能接受全栈,沙币公司
如果可以选,你最想去哪家...
点赞 评论 收藏
分享
轻絵梨花泪沾衣:南泵,大少爷驾到通通闪开
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务