前文介绍了一维正向云发生器的代码,在此基础上继续尝试二维正向云发生器的实现。由此可以扩展到N维。数据能够顺利获取,但是由于我对matplotlib这个工具包不太熟悉,呈现的图可能不一定准确和合适。
import matplotlib
import math
import random
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import numpy as np
xvalue=[] #保存所有生成的正态随机数
yvalue=[] #保存所有正态随机数的确定度
zvalue=[]
def cloud(Ex,Ey,Enx,Eny,Hex,Hey,n):
for i in range(0,n):
Ennx=random.normalvariate(0,1)*Hex+Enx #生成一个以Enx为期望,Hex为方差的正态随机数Ennx
Enny=random.normalvariate(0,1)*Hey+Eny #生成一个以Eny为期望,Hey为方差的正态随机数Enny
x=random.normalvariate(0,1)*Ennx+Ex #生成一个以Ex为期望,Ennx为方差的正态随机数x
y=random.normalvariate(0,1)*Enny+Ey #生成一个以Ey为期望,Enny为方差的正态随机数y
z=math.exp( -( (x-Ex)**2/2*Ennx*Ennx + (y-Ey)**2/2*Enny*Enny ) ) #计算x,y的确定度y
print(x,y,z)
xval