定义阶乘算法
# 阶乘算法
def factorial(n: int)->int:
sum = 1
for i in range(1, n + 1):
# 连续计算乘法
sum *= i
return sum
定义排列算法
# 排列算法
# 排列的定义:从n个不同元素中,任取m(m≤n,m与n均为自然数,下同)个不同的元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列;从n个不同元素中取出m(m≤n)个元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数
def factorial_Amn(m: int, n: int) ->int:
if m <= n:
return factorial(n) / factorial(n - m)
else:
pass
定义组合算法
# 组合算法
# 组合的定义:从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数。用符号 C(n,m) 表示。
def factorial_Cmn(m: int, n: int) ->int:
if m <= n:
return factorial_Amn(m, n) / factorial(m)
else:
pass
双色球有多少种可能
# 双色球所有可能组合数量为?
# 红球可能组合数
redbolls = factorial_Cmn(6, 33)
# 蓝球可能组合数
bluebolls = factorial_Cmn(1, 16)
# 合计组合数
print("双色球所有可能组合数量为: {:,} 种可能".format(redbolls * bluebolls))
结果
双色球所有可能组合数量为: 17,721,088.0 种可能
双色球全部购买要花多少钱
print("双色球全部购买所需要花费: {:,} 元".format(redbolls * bluebolls * 2))
总花费金额
双色球全部购买所需要花费: 35,442,176.0 元
双色球中奖概率是多少
print("双色球购买1注中奖概率为: {:.10%}".format(1 / (redbolls * bluebolls)))
单注中奖概率
双色球购买1注中奖概率为: 0.0000056430%
这跟0没什么区别…….
大乐透有多少种可能
# 大乐透所有可能组合数量为?
print()
# 前区可能组合数
frontbolls = factorial_Cmn(5, 35)
# 后区可能组合数
lastbolls = factorial_Cmn(2, 12)
# 合计组合数
print("大乐透所有可能组合数量为: {:,} 种可能".format(frontbolls * lastbolls))
结果
大乐透所有可能组合数量为: 21,425,712.0 种可能
大乐透全部购买要花多少钱
print("大乐透全部购买需要花费: {:,}元".format(frontbolls * lastbolls * 2))
总花费金额
大乐透全部购买需要花费: 42,851,424.0元
大乐透中奖概率是多少
print("大乐透购买1注中奖概率为: {:.10%}".format(1 / (frontbolls * lastbolls)))
单注中奖概率
大乐透购买1注中奖概率为: 0.0000046673%
….这结果, 还不如买双色球去….更有希望
完整代码
# 阶乘算法
def factorial(n: int)->int:
sum = 1
for i in range(1, n + 1):
# 连续计算乘法
sum *= i
return sum
# 排列算法
# 排列的定义:从n个不同元素中,任取m(m≤n,m与n均为自然数,下同)个不同的元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列;从n个不同元素中取出m(m≤n)个元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数用符号 A(n,m)
def factorial_Amn(m: int, n: int) ->int:
if m <= n:
return factorial(n) / factorial(n - m)
else:
pass
# 组合算法
# 组合的定义:从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数。用符号 C(n,m) 表示。
def factorial_Cmn(m: int, n: int) ->int:
if m <= n:
return factorial_Amn(m, n) / factorial(m)
else:
pass
# 双色球所有可能组合数量为?
# 红球可能组合数
redbolls = factorial_Cmn(6, 33)
# 蓝球可能组合数
bluebolls = factorial_Cmn(1, 16)
# 合计组合数
print("双色球所有可能组合数量为: {:,} 种可能".format(redbolls * bluebolls))
print("双色球全部购买所需要花费: {:,} 元".format(redbolls * bluebolls * 2))
print("双色球购买1注中奖概率为: {:.10%}".format(1 / (redbolls * bluebolls)))
# 大乐透所有可能组合数量为?
print()
# 前区可能组合数
frontbolls = factorial_Cmn(5, 35)
# 后区可能组合数
lastbolls = factorial_Cmn(2, 12)
# 合计组合数
print("大乐透所有可能组合数量为: {:,} 种可能".format(frontbolls * lastbolls))
print("大乐透全部购买需要花费: {:,}元".format(frontbolls * lastbolls * 2))
print("大乐透购买1注中奖概率为: {:.10%}".format(1 / (frontbolls * lastbolls)))
汇总结果
双色球所有可能组合数量为: 17,721,088.0 种可能
双色球全部购买所需要花费: 35,442,176.0 元
双色球购买1注中奖概率为: 0.0000056430%
大乐透所有可能组合数量为: 21,425,712.0 种可能
大乐透全部购买需要花费: 42,851,424.0元
大乐透购买1注中奖概率为: 0.0000046673%