如何用Python在指定抛物线内生成100个y值小于15000的随机点?
在抛物线y=2x²+10x内生成100个y<15000的随机点
步骤说明
确定x的有效范围
要满足抛物线的y值小于15000,解不等式2x² + 10x < 15000,化简后通过一元二次方程求根公式计算,得到x的取值区间约为 (-89.14, 84.14)。这个区间内的x对应的抛物线y值都会小于15000。生成随机点逻辑
- 在上述x区间内生成100个随机数;
- 对每个x,计算抛物线对应的y值
y_parabola = 2*x² + 10*x; - 每个点的y值取0到
y_parabola之间的随机数,确保点落在抛物线内部(且因x的范围限制,y自动满足小于15000的要求)。
完整实现代码
import numpy as np import matplotlib.pyplot as plt # 计算x的精确边界 x_min = (-5 - np.sqrt(5**2 + 4*2*15000)) / (2*2) x_max = (-5 + np.sqrt(5**2 + 4*2*15000)) / (2*2) # 生成100个随机x值 x_random = np.random.uniform(low=x_min, high=x_max, size=100) # 计算每个x对应的抛物线y值 y_parabola = 2 * x_random**2 + 10 * x_random # 生成抛物线内部的随机y值 y_random = np.random.uniform(low=0, high=y_parabola, size=100) # 绘制抛物线和随机点 x = np.linspace(x_min, x_max, 1000) y = 2*x**2 + 10*x plt.plot(x, y, label='抛物线y=2x²+10x') plt.scatter(x_random, y_random, color='red', s=10, label='随机点') plt.xlabel('x') plt.ylabel('y') plt.legend() plt.title('抛物线内的随机点(y<15000)') plt.show()
代码说明
x_min和x_max通过求根公式精确计算,避免手动估算的误差;- 使用
np.random.uniform生成均匀分布的随机数,保证点的分布更均匀; - 绘制代码同时展示抛物线和随机点,可直观验证点的位置是否符合要求。
内容的提问来源于stack exchange,提问作者Erica Hashimoto
相关产品推荐
相关产品推荐

