骰子大家都玩过,那么怎么样才能够尽可能的高概率猜中呢???
三岁带你一起来看看里面的秘密吧
· 看看这里面的小秘密
一个六面骰子100 000次结果统计
emmm 根据都差不多,区别不是很大如果次数足够多在理论上是一样的。
那我们接下来看一下两个六面骰子的结果
咦这个的区别就这么大了,emmm,这个里面的结果大家也懂了。
记得细品,细细品。
看看怎么样查看其他的结果
安装pygal画廊
在DOS中输入 pip install pygal 即可,如果安装不了等情况请留言或私聊
创建骰子的类
#die.py from random import randint #导入随机函数 class Die(): ''' 表示一个骰子的类 ''' def __init__(self, num_sides = 6): ''' 默认骰子6个面 ''' self.num_sides = num_sides def roll(self): ''' 返回一个位于1和骰子面之间的随机值 ''' return randint(1, self.num_sides)
打印结果查看
#die_visual.py from die import Die #导入骰子类 # 创建一个D6 die = Die() # 掷几次骰子,并将结果存储在一个列表中 results = [] for roll_num in range(100): result = die.roll() results.append(result) print(results)
测试
[6, 2, 3, 3, 6, 3, 5, 2, 5, 2, 4, 5, 1, 3, 2, 4, 1, 2, 3, 4, 1, 2, 1, 5, 5, 2, 2, 5,
目前为止没有问题
统计分析结果
frequencies = [] for value in range(1, die.num_sides+1): frequency = results.count(value) frequencies.append(frequency) print(frequencies)
测试
[16, 18, 18, 14, 17, 17]
绘制图形,进行可视化操作
import pygal #导入pygal库 …… # 对结果进行可视化 hist = pygal.Bar() hist.title = "Results of rolling one D6 1000 times." #图形标题 hist.x_labels = ['1', '2', '3', '4', '5', '6'] #图形底标 hist.x_title = "Result" hist.y_title = "Frequency of Result" #图形横轴与纵轴 hist.add('D6', frequencies) #图例 hist.render_to_file('die_visual.svg')
我们把上面的测试次数加大一点加到100 000 就得到了结果
两个D6 骰子
再添加一个骰子,然后把结果值,底标及名字进行修改即可
#two_die_visual.py from die import Die import pygal #创建两个D6 die_1 = Die() die_2 = Die() #多次投几次骰子,并将结果存储列表中 results = [] for roll_num in range(100000): result = die_1.roll() + die_2.roll() results.append(result) #print(results)#输出投掷骰子结果 #分析结果 frequencies = [] max_result = die_1.num_sides + die_2.num_sides for value in range(1, max_result+1): frequency = results.count(value) frequencies.append(frequency) #print(frequencies) #进行结果比对 hist = pygal.Bar() #name = '' hist.title = 'Results of rolling two D6 100000 times.' hist.x_labels = ['1', '2', '3', '4', '5','6', '7', '8', '9', '10', '11', '12'] hist.x_title = 'Result' hist.y_title = 'Frequency of Result' hist.add('D6 + D6', frequencies) hist.render_to_file('two_die_visual1.svg')
这样子就可以得到下图了
那么问题来了,能不能自己定义次数,让次数再多一点,同时直接修改名字
ok
搞他
修改,完善
#two_die_visual.py from die import Die import pygal #创建一个D6 die_1 = Die() die_2 = Die() #多次投几次骰子,并将结果存储列表中 results = [] time = int(input('请输入测试次数')) for roll_num in range(time): result = die_1.roll() + die_2.roll() results.append(result) #print(results)#输出投掷骰子结果 #分析结果 frequencies = [] max_result = die_1.num_sides + die_2.num_sides for value in range(1, max_result+1): frequency = results.count(value) frequencies.append(frequency) #print(frequencies) #进行结果比对 hist = pygal.Bar() #name = '' hist.title = f'Results of rolling two D6 {time} times.' #必须使用python3.7以上版本才可以使用该语句,不然会报错 #3.7以下使用下面语句 #hist.title = 'Results of rolling two D6 {} times.'.format(time) hist.x_labels = ['1', '2', '3', '4', '5','6', '7', '8', '9', '10', '11', '12'] hist.x_title = 'Result' hist.y_title = 'Frequency of Result' hist.add('D6 + D6', frequencies) hist.render_to_file('two_die_visual1.svg')
其他的类型都可以自己设计了
如果添加D8 就用 Die(8)即可,记得修改下标呦!
其他的小秘密还得靠你自己去探索呦
一天一个秃头小技巧,大家都是秃头小宝贝,奥利给!!!