ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

用Python来掷个色子~

2021-07-06 15:57:14  阅读:146  来源: 互联网

标签:__ rand 色子 Python number print 点数


掷色子的问题总会出现在概率课本中,老师们都喜欢拿这个耳熟能详的事件来举例子,但今天我们不讲概率,我们来用Python模拟掷色子。

 

用random模块我们可以轻易地模拟输出点数(一般我们取的这个点数是色子顶上的点数),即随机生成一个1-6的数字。

random.randint(1,6)

的确非常容易,但如果我们想要知道色子的正面反面,左面右面的数值,又该如何计算呢?

本着求知探索精神, 我翻箱倒柜找到一枚祖传色子,来仔细观察一下。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

我们可以发现,每个点数的对面点数相加都为7,即1的对面点数为6,剩下的2,3,4,5也对称的分布在1的四侧(2,5相对,3,4相对)。

但是其四面的顺序,从不同的角度观测其排列顺序方式也是不同的,还是以顶上点数1为例,从点数2开始按照顺时针我们可以看到2,4,5,3,从点数4开始按照顺时针我们可以看到4,5,3,2,而这些序列构成一个环状。

这些环状数组,我们可以直接用列表来表示,1-6点的顺时针侧面点数列表如下所示,

[2,4,5,3]
[1,3,6,4]
[1,5,6,2]
[1,2,6,5]
[1,4,6,3]
[2,3,5,4]

 

因此,想要描述一个色子的每一面就有了思路,首先随机生成一个数字,直接当作顶部的数字;接着随机生成一个状态,表示从其对应数组的某一位开始,也可以直观地理解为从不同角度看过去;最后输出不同位置的点数,用手绘立方体的方式打印出色子。

rand_number=random.randint(0,5)
rand_state=random.randint(0,3)

def throw():
print(" __ __ __ \n");
print(" / %d / |\n"%(rand_number+1))
print(" __ __ __ |\n")
print(" | | %d |\n"%dice[rand_number][(rand_state+1)%4])
print(" %d | %d | /\n"%(dice[rand_number][(rand_state+3)%4],dice[rand_number][(rand_state+2)%4]))
print(" __ __ __ /\n")
print(" %d\n"%(6-rand_number))

 

下面请欣赏我的灵魂画作之画色子~

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 

 

——END——

 

 

 

标签:__,rand,色子,Python,number,print,点数
来源: https://blog.51cto.com/u_15289428/2991405

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有