我有代码来绘制粒子轨迹,直到 3D 矩阵的一部分中的所有空间都被填充。这是基于粒子的最终位置。对穿过 body 的辐射束中的粒子进行简化模拟。
我能够使用 for 循环将一大堆粒子轨迹绘制在一起,并获取填充所有空间所需的数字。我这样做是通过 '''
n = 100
for n in range(particles):
Path(ax,body)
if body==[[[0 for k in range(10)] for j in range(10)] for i in range(10)]:
print('Tumor destroyed after particle number', n)
break
plt.show()
'''
我得到了粒子的数量(n)。但我想循环多次,然后得到填充矩阵中所有空间(破坏肿瘤)所需的数字(n)的平均值。我尝试做 '''
trials=10
for i in range(trials):
for n in range(particles):
Path(ax,body)
if body==[[[0 for k in range(10)] for j in range(10)] for i in range(10)]:
print('Tumor destroyed after particle number', n)
break
''' 但我只是从代码的第一部分得到相同的 n 值 10 次。我如何让它每次都执行新的第一位代码并获得不同的 n 值来平均它们。
if语句是粒子路径结束的条件。
由于我使用随机数进行计算,因此得出的数字应该不同。计算是在 Path 函数内完成的。我只想多次运行第一个代码片段,但不知道如何执行它。
最佳答案
在每次试验中,您都需要从初始 body
(可能还有 ax
)的新副本开始。
大致如下:
import copy
# No need to create this more than once.
empty_body = [[[0 for k in range(10)] for j in range(10)] for i in range(10)]
trials=10
for i in range(trials):
test_body = copy.deepcopy(body)
for n in range(particles):
Path(ax, test_body)
if test_body == empty_body:
print('Tumor destroyed after particle number', n)
break
关于python - 函数的嵌套循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59258020/