简单实现 随机发牌算法

背景:从10w个数中随机取出54个数组成一副牌

方法一:使用集合

def poker():
    p = set()
    while True:
        a = randint(1, 1000000) % 54
        p.add(a)if len(p) == 54:
            break
    return p

方法二:使用列表

def poker():
    p = []
    while True:
        a = randint(1, 1000000) % 54
        if a not in p:
            p.append(a)
        if len(p) == 54:
            break
    return p

集合比列表的运行速度快的多

列表的时间复杂度是二次方增长,时间复杂度O(N^2),集合的时间复杂度是O(N)

列表底层是链表,集合底层是hash表

原文地址:https://www.cnblogs.com/wx2017/p/12708588.html