python的random模块三choices和shuffle()

choices()从给定序列中随机选取元素序列

语法:

random.choices (population , weights =None , * , cum_weights =None , k =1)

  • population:必须是一个序列,可以是列表,元组,字符串等等。表示要从中选取元素的序列。
  • weights:可选参数。必须是一个数字序列,长度必须和population相同。表示每个元素被选中的概率,可以是小数,但必须大于等于0。
  • cum_weights:可选参数。必须是一个数字序列,长度必须和population相同。表示累计权重,即前n个元素被选中的概率,如果指定了cum_weights,那么不能同时指定weights。
  • k:可选参数。表示要选取的元素个数,默认值是1。

例子:

复制代码
import random



seq1 = range(1,10)

print(seq1)

#从1-10中随机选取一个数,2被选中的概率是3/9,其他数字被选中的概率是1/7num = random.choices(seq1, weights=[1, 3, 1, 1, 1, 1, 1, 1, 1])

print(num)

#随机生成序列,每一个数字出现的概率都是1/7num1 = random.choices(seq1, weights=[1, 1, 1, 1, 1, 1, 1, 1, 1],k=7)

print(num1)

shuffle() 将序列中所有元素随机排序

语法:

random.shuffle(x)

x 是一个序列

例子:

复制代码
import random



list = [20, 16, 10, 5];

random.shuffle(list)

print("随机排序列表 : ", list)

结果:

随机排序列表 : [10, 16, 20, 5]

例子2:choices()和shuffle()结合使用,生成扑克牌、洗牌、发牌

复制代码
import random



#生成一副扑克牌,四种花色heart --红桃spade --黑桃club --梅花diamond --方块#数字: two,three,four,five,six,seven,eight,nine,ten #非数字:J是Jack;Q是Queen;K是King;A是Ace;#大鬼red joker小鬼black jokerjokers = ['redjoker','blackjoker']

suits = ['♠', '♥', '♦', '♣']

ranks = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A']

deck = [rank + suit for suit in suits for rank in ranks] + jokers

#洗牌random.shuffle(deck)

print('洗牌后的所有牌:',deck)

#发牌,三个人,每人18张牌size,rest = divmod(len(deck),3)

players = list()



for i in range(3):

    deck_tmp = deck[i*size:(i+1)*size]

    players.append(deck_tmp)

print(players)



结果:
复制代码
洗牌后的所有牌: ['6♠', 'A♠', '5♣', '8♣', '10♠', '10♦', '3♦', 'K♦', 'A♦', '4♠', '7♥', 'redjoker', '6♣', '7♣', 'J♦', '5♠', '2♣', '3♠', 'Q♥', 'blackjoker', 'J♣', 'J♠', '9♠', '2♦', 'J♥', '5♥', '9♦', '2♥', 'Q♣', '4♦', '8♦', 'K♠', 'A♥', '10♣', 'Q♠', '10♥', '9♣', '4♥', 'Q♦', '2♠', '7♦', '3♥', '6♦', 'K♣', '7♠', '8♠', '9♥', 'K♥', '4♣', '8♥', '3♣', '6♥', 'A♣', '5♦']

\['6♠', 'A♠', '5♣', '8♣', '10♠', '10♦', '3♦', 'K♦', 'A♦', '4♠', '7♥', 'redjoker', '6♣', '7♣', 'J♦', '5♠', '2♣', '3♠'\], \['Q♥', 'blackjoker', 'J♣', 'J♠', '9♠', '2♦', 'J♥', '5♥', '9♦', '2♥', 'Q♣', '4♦', '8♦', 'K♠', 'A♥', '10♣', 'Q♠', '10♥'\], \['9♣', '4♥', 'Q♦', '2♠', '7♦', '3♥', '6♦', 'K♣', '7♠', '8♠', '9♥', 'K♥', '4♣', '8♥', '3♣', '6♥', 'A♣', '5♦'\]

相关推荐
Brduino脑机接口技术答疑3 分钟前
脑机接口数据处理连载(二) 数据源头解析:脑电信号的采集原理与数据特性
人工智能·python·算法·数据分析·脑机接口
白露与泡影3 分钟前
Java面试题2025最新、最全、最细(附答案)
java·开发语言
Wise玩转AI9 分钟前
Day 25|智能体的“可观察性(Observability)体系”
人工智能·python·ai·chatgpt·ai智能体
幸运小圣9 分钟前
递归(Recursion)快速上手指南【JS例子】
开发语言·javascript·ecmascript
p***924812 分钟前
Python使用PyMySQL操作MySQL完整指南
数据库·python·mysql
宠..19 分钟前
安装 Qt VS Tool 插件
开发语言·qt
kali-Myon29 分钟前
NewStarCTF2025-Week5-Web
java·python·安全·web安全·php·web·ctf
未来之窗软件服务31 分钟前
幽冥大陆(三十九)php二维数组去重——东方仙盟筑基期
android·开发语言·算法·php·仙盟创梦ide·东方仙盟·东方仙盟sdk
DFT计算杂谈34 分钟前
Abinit-10.4.7安装教程
linux·数据库·python·算法·matlab
程序猫.34 分钟前
Java零基础入门:集合进阶(下)
java·开发语言