【发布时间】:2019-01-28 20:37:54
【问题描述】:
我想编写一个 python 脚本来生成一个均匀分布的 3D 坐标(例如,x、y、z),其中 x、y 和 z 是 0 到 1 之间的浮点数。目前,z 可以固定,因此我需要的是二维(xy)平面中的均匀分布点。我编写了一个脚本来完成这项工作,并检查了 x 和 y 是统一的数字。但是,我不确定这些点是否均匀分布在(x-y)平面上。
我的代码是
1 import matplotlib.pyplot as plt
2 import random
3 import numpy as np
4 import csv
5 nk1=300
6 nk2=300
7 nk3=10
8 kx=[]
9 ky=[]
10 kz=[]
11 for i in range(nk1):
12 for j in range(nk2):
13 for k in range(nk3):
14 xkg1=random.random()
15 xkg2=random.random()
16 xkg3 = float(k)/nk3
17 kx.append(xkg1)
18 ky.append(xkg2)
19 kz.append(xkg3)
20 kx=np.array(kx)
21 count, bins, ignored = plt.hist(kx, normed=True)
22 plt.plot(bins, np.ones_like(bins), linewidth=2, color='r')
23 plt.show()
该图显示“kx”和“ky”都是均匀分布的数字,但是,如何确保 x-y 在二维平面中均匀分布?
【问题讨论】:
-
可以直接使用numpy的
rand函数来代替循环:np.random.rand(nbr_points, nbre_dim) -
抱歉,我的回答经常更新。我在手机上,我不得不继续检查其他东西。现在完成了。
-
能否请您从代码中删除行号?它们使复制和粘贴到编辑器或控制台变得非常困难。