python 平均分布_python 实现生成均匀分布的点

本文介绍了如何使用 NumPy 的 linspace 函数来生成等差数列。具体展示了如何在闭区间[-100, 100]内生成201个等间距的数值点,并讨论了当指定点数与预期不同时的情况。

如下所示:

import numpy as np

print(np.linspace(-100,100,201)

np.linspace(),起始位置,终止位置,中间包括0,一共要201个点

因为-100,100共201个点,包括两边的数据,也就是数学上的闭区间。

结果:

-100. -99. -98. -97. -96. -95. -94. -93. -92. -91. -90. -89.

-88. -87. -86. -85. -84. -83. -82. -81. -80. -79. -78. -77.

-76. -75. -74. -73. -72. -71. -70. -69. -68. -67. -66. -65.

-64. -63. -62. -61. -60. -59. -58. -57. -56. -55. -54. -53.

-52. -51. -50. -49. -48. -47. -46. -45. -44. -43. -42. -41.

-40. -39. -38. -37. -36. -35. -34. -33. -32. -31. -30. -29.

-28. -27. -26. -25. -24. -23. -22. -21. -20. -19. -18. -17.

-16. -15. -14. -13. -12. -11. -10. -9. -8. -7. -6. -5.

-4. -3. -2. -1. 0. 1. 2. 3. 4. 5. 6. 7.

8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.

20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.

32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43.

44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55.

56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67.

68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79.

80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91.

92. 93. 94. 95. 96. 97. 98. 99. 100.]

但 如果 你没有计算两个数之间有多少点。

例如下意识的在(-100,100,200)之间取200个点,情况和你想的不一样:

结果:

[-100. -98.99497487 -97.98994975 -96.98492462 -95.9798995

-94.97487437 -93.96984925 -92.96482412 -91.95979899 -90.95477387

-89.94974874 -88.94472362 -87.93969849 -86.93467337 -85.92964824

-84.92462312 -83.91959799 -82.91457286 -81.90954774 -80.90452261

-79.89949749 -78.89447236 -77.88944724 -76.88442211 -75.87939698

-74.87437186 -73.86934673 -72.86432161 -71.85929648 -70.85427136

-69.84924623 -68.84422111 -67.83919598 -66.83417085 -65.82914573

-64.8241206 -63.81909548 -62.81407035 -61.80904523 -60.8040201

-59.79899497 -58.79396985 -57.78894472 -56.7839196 -55.77889447

-54.77386935 -53.76884422 -52.7638191 -51.75879397 -50.75376884

-49.74874372 -48.74371859 -47.73869347 -46.73366834 -45.72864322

-44.72361809 -43.71859296 -42.71356784 -41.70854271 -40.70351759

-39.69849246 -38.69346734 -37.68844221 -36.68341709 -35.67839196

-34.67336683 -33.66834171 -32.66331658 -31.65829146 -30.65326633

-29.64824121 -28.64321608 -27.63819095 -26.63316583 -25.6281407

-24.62311558 -23.61809045 -22.61306533 -21.6080402 -20.60301508

-19.59798995 -18.59296482 -17.5879397 -16.58291457 -15.57788945

-14.57286432 -13.5678392 -12.56281407 -11.55778894 -10.55276382

-9.54773869 -8.54271357 -7.53768844 -6.53266332 -5.52763819

-4.52261307 -3.51758794 -2.51256281 -1.50753769 -0.50251256

### Python均匀分布实现方法 在Python中,可以通过多种方式实现均匀分布。以下是几种常见的实现方法及其解释。 #### 使用NumPy生成均匀分布随机数 通过`numpy.random.uniform()`函数可以轻松生成服从均匀分布的随机数。此函数允许指定区间的最小值、最大值以及样本数量。以下是一个完整的代码示例: ```python import numpy as np import matplotlib.pyplot as plt low = 0.0 # 均匀分布的下界 high = 1.0 # 均匀分布的上界 size = 1000 # 随机数的数量 data = np.random.uniform(low, high, size) plt.hist(data, bins=50, density=True, alpha=0.5) plt.xlabel('X') plt.ylabel('Probability Density') plt.title('Uniform Distribution') plt.show() ``` 上述代码展示了如何生成并绘制均匀分布的数据[^1]。 --- #### 手动计算均匀分布的概率密度函数(PDF) 如果需要手动定义均匀分布的概率密度函数,则可以根据其数学表达式进行编程。对于给定范围 `[a, b]`,PDF 可表示为 `f(x) = 1 / (b - a)` 当 `x ∈ [a, b]`;否则为零。下面是一段用于绘制定义域上的 PDF 曲线的代码: ```python import numpy as np import matplotlib.pyplot as plt a = 0 # 最小值 b = 1 # 最大值 x = np.linspace(a - 1, b + 1, 1000) # 超出[a,b]范围的部分是为了展示边界外的情况 y = np.where((x >= a) & (x <= b), 1 / (b - a), 0) plt.plot(x, y, label=f'Uniform Distribution\nRange: [{a}, {b}]') plt.xlabel('x') plt.ylabel('Probability Density') plt.title('Uniform Distribution') plt.legend() plt.grid(True) plt.show() ``` 这段代码实现均匀分布的概率密度函数可视化[^3]。 --- #### 将均匀分布在特定几何形状上 除了基本的一维均匀分布之外,在某些情况下可能还需要将均匀地分布在二维或三维空间中的特殊区域(如圆周、球面)。例如,要将 n 个均匀地分布在单位球面上,可采用如下算法: ```python import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D def points_on_sphere(n): indices = np.arange(0, n, dtype=float) + 0.5 phi = np.arccos(1 - 2 * indices / n) theta = np.pi * (1 + 5 ** 0.5) * indices x, y, z = np.cos(theta) * np.sin(phi), np.sin(theta) * np.sin(phi), np.cos(phi) return x, y, z n = 100 x, y, z = points_on_sphere(n) fig = plt.figure(figsize=(8, 6)) ax = fig.add_subplot(111, projection='3d') ax.scatter(x, y, z, c='r', marker='o') ax.set_xlabel('X axis') ax.set_ylabel('Y axis') ax.set_zlabel('Z axis') plt.show() ``` 该脚本利用黄金分割法近似地解决了球面上均匀分布问题[^2]。 --- ### 总结 以上介绍了三种不同的场景下的均匀分布实现方案:一维连续型数据采样、概率密度函数的手工构建以及高维度空间内的离散化处理。每种情况都对应着实际应用需求的不同侧面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值