import matplotlib.pyplot as plt
from random import randint
import numpy as np
classDie:"""模拟投掷筛子"""def__init__(self,num_sides=6):
self.num_sides=num_sides
defroll(self):return randint(1,self.num_sides)
num=100000#投掷1000次
num_sides=12
results=[]
die=Die(num_sides)#创建一个6面筛子for value inrange(num):
results.append(die.roll())
frequencies=[]for i inrange(1,num_sides+1):
frequencies.append(results.count(i))
fig,ax =plt.subplots()
x_values=list(range(1,num_sides+1))
p=ax.bar(x_values,frequencies,label='frequency')
ax.set_title("The frequency of chromophores")
ax.set_xlabel('surface')
ax.set_ylabel('quanity')#设置bar的格式
ax.bar_label(p,label_type='edge')
ax.legend()
plt.show()
投掷两个筛子
import matplotlib.pyplot as plt
from random import randint
import numpy as np
classDie:"""模拟投掷筛子"""def__init__(self,num_sides=6):
self.num_sides=num_sides
defroll(self):return randint(1,self.num_sides)
num=100000#投掷1000次
num_sides=6
results=[]
die=Die(num_sides)#创建一个6面筛子
die1=Die(num_sides)for value inrange(num):
results.append(die.roll()+die1.roll())
frequencies=[]for i inrange(1,num_sides*2+1):
frequencies.append(results.count(i))#绘图
fig,ax =plt.subplots()
x_values=list(range(1,num_sides*2+1))
p=ax.bar(x_values,frequencies,label='frequency')
ax.set_title("The frequency of chromophores")
ax.set_xlabel('surface')
ax.set_ylabel('quanity')
ax.set_xticks(x_values)#设置bar的格式
ax.bar_label(p,label_type='edge')
ax.legend()
plt.show()
重构代码
import matplotlib.pyplot as plt
from random import randint
import numpy as np
classDie:"""模拟投掷筛子"""def__init__(self,num_sides=[6]):
self.num_sides=num_sides
self.results=[]defroll(self):"""返回投掷筛子的总点数"""
result=0for value in self.num_sides:
result+=randint(1,value)return result
defroll_many(self,num=1000):"""投掷多次返回每次投掷的结果"""for value inrange(num):
self.results.append(self.roll())return self.results
defget_sum(self):"""返回点数的最大和"""
sum_=0for value in self.num_sides:
sum_+=value
return sum_
defget_frenquencies(self):"""获得每个点数出现的频次"""
frequencise=[]
sum_=self.get_sum()for i inrange(1,sum_+1):
frequency=self.results.count(i)
frequencise.append(frequency)return frequencise
num=100000#投掷1000次#可以投掷任意数量的筛子
num_sides=[6,6,2]
die=Die(num_sides=num_sides)
results=die.roll_many(num)
frequencise=die.get_frenquencies()print(frequencise)#绘图
fig,ax =plt.subplots()
x_values=list(range(1,die.get_sum()+1))
p=ax.bar(x_values,frequencise,label='frequency')
ax.set_title("The frequency of chromophores")
ax.set_xlabel('surface')
ax.set_ylabel('quanity')
ax.set_xticks(x_values)#设置bar的格式
ax.bar_label(p,label_type='edge')
ax.legend()
plt.show()
什么是责任链模式
责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,旨在通过将请求的处理分布在一系列对象上,从而使得多个对象可以尝试处理同一个请求。这些对象被链接成一条链,每个对象都可以对请…
jmap工具查看堆内存
jmap:全称JVM Memory Map
是一个可以输出所有内存中对象的工具,可以将JVM中的heap(堆),以二进制输出成文本,打印出Java进程对应的内存
找到pid jmap -heap 19792 Attaching to process ID 19792…
3D 视觉感知任务,包括基于多摄像头的3D检测和地图分割对于自动驾驶系统至关重要。本文提出了一种名为BEVFormer的新框架,它通过使用空间和时间的Transformer 学习统一的BEV表示来支持多个自动驾驶感知任务。简而言之,BEVFormer通过预定义的网格形式的Bev Query与空间和时间空…