使用Pyhton实现在画布上随机生成一些点 然后根据一个权重 扩大一部分点的半径并记录
时间: 2024-04-29 12:26:29 浏览: 105
它们的坐标和半径大小,你有什么建议吗?
Sure! 你可以使用 Python 中的 Turtle 库来创建画布,并使用随机数生成一些点。 Turtle 库提供了一个简单的界面,允许你在画布上创建各种形状,比如点、线、弧和文本等。具体的步骤如下:
1. 首先,导入 Turtle 库,创建一个画布以及 Turtle 实例:
```
import turtle
turtle.bgcolor('black')
t = turtle.Turtle()
t.speed('fastest')
t.pensize(2)
```
这里,我们将画布背景色设为黑色,创建了一个名为 t 的 Turtle 实例,并将其速度设置为 fastest,以便更快地生成点。
2. 然后,在画布上随机生成一些点并记录它们的坐标和半径大小:
```
import random
points = []
for i in range(50):
x = random.randint(-200, 200)
y = random.randint(-200, 200)
r = random.randint(5, 15)
points.append((x, y, r))
```
这里,我们使用了 Python 的随机数模块 random,循环生成了 50 个坐标和半径随机的点,并将其存储在 points 列表中。
3. 接下来,根据一个权重扩大一部分点的半径:
```
import numpy as np
weights = np.random.normal(size=len(points)) * 0.2
for i, (x, y, r) in enumerate(points):
if weights[i] > 0:
r *= weights[i]
points[i] = (x, y, r)
```
这里,我们使用了 Python 的科学计算库 NumPy,生成了一个与 points 列表长度相等的随机权重列表,然后根据权重扩大了部分点的半径大小。这里的扩大比例为 0.2。
4. 最后,使用 Turtle 库在画布上绘制点:
```
for x, y, r in points:
t.up()
t.goto(x, y - r)
t.down()
t.circle(r)
turtle.done()
```
这里,我们遍历了 points 列表,依次绘制了每个点。使用 Turtle 库的 up、goto 和 down 方法来定位和绘制点。最后,调用 done() 方法,以便在窗口中保留画布。
希望这些代码能够帮助你实现目标!
阅读全文