第一种方法(推荐)
适用于随机取一个值, 返回一个值
import random list1 = [\'佛山\', \'南宁\', \'北海\', \'杭州\', \'南昌\', \'厦门\', \'温州\'] a = random.choice(list1) print(a) # 返回一个值
第二种方法
适用于随机取一组值, 返回一个list
import random list1 = [\'佛山\', \'南宁\', \'北海\', \'杭州\', \'南昌\', \'厦门\', \'温州\'] # 随机返回只有一个值的list a = random.sample(list1, 1) # 随机返回只有一个值的list b = random.sample(list1, 3) print(a) print(b) # 返回list
第三种方法(不推荐,效率太慢)
自写的方法
import random list1 = [\'佛山\', \'南宁\', \'北海\', \'杭州\', \'南昌\', \'厦门\', \'温州\'] ln = len(list1) a = list1[random.randint(0, ln)] print(a)
第四种方法(特殊场景)
这里的特殊场景举例说明:
抽奖: 从10个人随机抽出1个有奖的, 按随机分配, 每个人的概率都是十分之一, 但是否可以在代码层面, 让某个人的概率更高些呢?
答案当然是可以的了
上码:
In [1]: import random # 这里给李四个权重为1,看看有什么结果 In [2]: a = {\"张三\": 0, \"李四\":1, \"王五\":0, \"赵七\": 0, \"钱八\": 0} # 取5次, 每次都是李四, In [3]: random.choices(list(a.keys()), weights=list(a.values()), k=5) Out[3]: [\'李四\', \'李四\', \'李四\', \'李四\', \'李四\'] # 取1次, 当然就是李四了 In [4]: random.choices(list(a.keys()), weights=list(a.values()), k=1) Out[4]: [\'李四\'] # 改下权重:李四和赵七都为1 In [5]: a = {\"张三\": 0, \"李四\":1, \"王五\":0, \"赵七\": 1, \"钱八\": 0} # 取5次,也就是李四和赵七两个人, 没有其它人什么事了 In [6]: random.choices(list(a.keys()), weights=list(a.values()), k=5) Out[6]: [\'李四\', \'李四\', \'李四\', \'赵七\', \'李四\'] In [7]: random.choices(list(a.keys()), weights=list(a.values()), k=5) Out[7]: [\'赵七\', \'李四\', \'李四\', \'李四\', \'赵七\'] In [8]: random.choices(list(a.keys()), weights=list(a.values()), k=5) Out[8]: [\'李四\', \'赵七\', \'李四\', \'李四\', \'赵七\'] # 再改一下, 每个人的权重都不一样, In [9]: a = {\"张三\": 2, \"李四\":1, \"王五\":3, \"赵七\": 1, \"钱八\": 4} # 多执行几次, 会发现每个人都可能会出现, 只是出现的概率完全不一样了, 钱八出现次数最多. In [10]: random.choices(list(a.keys()), weights=list(a.values()), k=2) Out[10]: [\'王五\', \'赵七\'] In [11]: random.choices(list(a.keys()), weights=list(a.values()), k=2) Out[11]: [\'王五\', \'王五\']
© 版权声明
THE END
暂无评论内容