简介:今天,首席执行官指出,要与您分享有关在Python摇晃骰子的可能性。如果您可以解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!
导入numpy作为NP
'''蒙特卡洛方法''
epoch = 10000#仿真10000次
计数= 0#计数
对于我的范围(时代):
dice_12 = np.random.randint(6,size = 12)+1#每次模拟12个骰子
如果dice_12 [dice_12 == 6] .size = 2:count+= 1
打印('同时投资12个骰子,至少两个骰子的概率至少两个骰子是{}'。格式(count/epoch))
摇晃Shunzi 5!*2*(1/6)^5的可能性
摇晃一对的概率(有两个颜色相同的数字,3,4,5颜色点可以是相同的默认值)1-6*5*4*3*2*(1/6)^5
摇动两个不同的对立性概率(有四个颜色,两个是相同的)
C(2,5)C(2,3)/2*6*5*6*(1/6)^6
摇动相同数字的三个颜色的可能性是(只有三种颜色是相同的)
5!/(3! * 1!1!) * 6 * 5 * 5 * 5 *(1/6)^5
摇动三个相同数字和其他两个颜色点的概率是相同的。
3个元素红色,2个元素白色,连续行,更改颜色
5!/(3! * 2!) * 6 * 5 *(1/6)^5
仅摇动相同点的四个颜色的可能性是
5 * 6 * 5 *(1/6)^5
摆脱五个相同的颜色概率
6*(1/6)^5
看来,无论x的数量和面孔有多少个颜色和面孔,x的数量应为一个,因此x = 1的范围为((a * b) - (a -1)),因此函数定义不是在x的定义期间,在X中使用,尝试运行,看看是否是您想要的结果?
def dict(a,b):
X = 1/((A*B) - (A-1))
返回x
而真:
尝试:
a = int(输入(“请丢失颜色的数量:”)
如果a = 1:
b = int(输入(“请将颜色丢给面条:”)
如果b = 2:
c = int(输入(“请输入点:”)
如果c = a和c = a*b:
dict(a,b)
打印(概率'+'%。2F%%'%(dict(a,b)*100))
休息
Elif C = A*1:
打印(“点数必须更大,等于鸡巴的数量,请重新输入。”)
精灵C a*b:
打印(“点数必须小于颜料总数,请重新输入。”)
Elif B 2:
打印(“面条的数量大于1,请重新输入。”)
Elif A 1:
打印(“颜料的数量大于1,请重新输入。”)
除valueerror:
打印(“不正确格式,请重新输入。”)
请参阅以下代码。
游戏可能有问题,主要是因为在保留卡时,进入ACE或“ ACE ACE”之间有什么区别。最后,是否要输入ACE将所有ACE保留在手上或仅一个,这是不清楚的。
模拟没有问题,它与图片中的结果完全相同
必须使用python 3
导入随机
进口收藏
_dice_type = ['ace','king','queen','jack','10','9']
}
('5kind',“一种五个”),
('4kind',“一种四个”),
('full',“满屋”),
('直','直'),
('3kind',“一种”),
('2pair','两对'),
('1pair','一对'),
('胸围','胸围),
)))
def_check_hand(DICES):
counter = collections.counter(dices)
如果Len(Counter)== 1:
返回'5kind'
sorted5 = counter.most_common(5)
如果排序5 [0] [1] == 4:
返回'4Kind'
如果排序5 [0] [1] == 3:
如果排序5 [1] [1] == 2:
返回“满”
别的:
返回'3Kind'
如果排序5 [0] [1] == 2:
如果排序5 [1] [1] == 2:
返回'2pair'
别的:
返回'1pair'
如果Len(Counter)== 5:
dtype = sorted5 [0] [0]
对于x中的x:
如果dtype!= x [0]:
休息
dtype+= 1
别的:
返回“直线”
返回“胸围”
def Play():
dices = []
重试= 0
而真:
保持=五个(DICE)
如果保留= 0:
休息
passes.extend
打印(“卷为:{}”。格式(
“。加入([_ dice_type [d] for seted(dices)]))))))
))
print(“这是{}”。格式(_hand_mapping [_check_hand(dices)])))))
如果重试1:
休息
提示=“您要保留哪个骰子{}卷?”。格式 (
“第二”如果重试== 0 else“第三”
治愈
而真:
答案=输入(提示).lower()
如果答案=='all':
休息
答案= [x.capitalize()for X in Anger.split()]
如果设置(anny).issubset(set(_dice_type)):
休息
打印(“这是不明式的,请重试!”))))
重试+= 1
如果答案=='all':
打印(“确定,完成”)
休息
TMP = DICE
dices = []
对于TMP中的X:
如果_dice_type [x]在答案中:
dispis.append(x)
answer.remove(_dice_type [x])
def仿真(n,debug = false):
结果= dict.fromkeys(_hand_mapping.keys(),0),0)
对于_在范围(n)中:
pestes = [rand.randint(0,5)的x在范围(5)中]
如果调试:
print(“ debug:”,“”。加入([_ dice_type [d] for serted(dices)]))))))))))))))))))))))))))))))))))
结果[_CHECK_HAND(DIA)]+= 1
对于k,v in _hand_mapping.items():
cnt =结果[k]
print(“ {:16S}:{:.2f}%”。格式(v,100*cnt/n))
# - * - 编码:UTF-8 - * -
随机导入,时间
DEF RANDSTR(X):
num = int(随机均匀(1,7))
返回[num,“不”+ str(x) +“”从骰子摇晃的点为:“ + str(num) +”
”
def tous(r):
总和,约束= 0,“”“”
#range(r)表示0到r,因此在下面使用
对于我的范围(1,r+1):
conresult = randstr(i)
sum+= conresult [0]
cond+= conresult [1]
返回[sum,约束]
def calltous(k,v):
daxiao =(“小数为小”,“点很大”)
结果= tous(k)
打印结果[1] +“所有骰子摇动的总数:“ + str(结果[0]) +”
“ + daxiao [(结果[0] -v)0] +”
“
而真:
Calltous(3,10)
时间。
结论:以上是首席CTO注释向所有人介绍的Python概率的总内容。我希望这对每个人都会有所帮助。如果您仍然想进一步了解这一点,请记住要收集对该网站的关注。