Как сделать случайное сканирование Монте-Карло и получить результаты в файле данных - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть какая-то программа python, скажем, 'Test.py', у нее есть класс, и внутри нее в init я должен ввести три случайные величины.

import math
class Vector():
def __init__(self,vx,vy,vz):
    self.x=vx
    self.y=vy
    self.z=vz

def norm(self):
    xx=self.x**2
    yy=self.y**2
    zz=self.z**2
    return math.sqrt(xx+yy+zz)

Теперь я создал файл запуска «Testrun.py», который вызывает этот файл, а затем для каждого набора данных он выдает один результат

import math
import numpy as np

from Desktop import Test
def random_range(n, min, max):
   return min + np.random.random(n) * (max - min)

model=Test.Vector(x,y,z)

x=random_range(20,2,9)
y=random_range(20,2,9)
z=random_range(20,2,9)

trial_args = np.stack((x, y, z), axis=-1)
for x, y, z in trial_args:
   print(x, y, z, '=>', model.norm())

Теперь я хочу сохранить только результаты который дает «норма»> 5 и хочет распечатать входы и выходы в файле данных

1 Ответ

0 голосов
/ 18 февраля 2020

Сохраняя тот же 'Test.py'

import math
class Vector():
 def __init__(self,vx,vy,vz):
    self.x=vx
    self.y=vy
    self.z=vz

 def norm(self):
    xx=self.x**2
    yy=self.y**2
    zz=self.z**2
    return math.sqrt(xx+yy+zz)

Мы должны поставить условие вывода, если l oop

import math
import numpy as np

from Desktop import Test
def random_range(n, min, max):
return min + np.random.random(n) * (max - min)

x=random_range(20,2,9)
y=random_range(20,2,9)
z=random_range(20,2,9)

trial_args = np.stack((x, y, z), axis=-1)
for x, y, z in trial_args:
    model=Test.Vector(x,y,z)
    if model.norm()>5:
       print(x, y, z, '=>', model.norm())
...