Как выполнить случайный параметр сканирования M C в python? - PullRequest
0 голосов
/ 12 февраля 2020

Я должен выполнить сканирование Монте-Карло по параметрам, предположим, x, y, z в диапазоне x -> (4, 8), y -> (- 5, 7), z -> (1,9 ) и для 4000 случайных точек параметров в этих заданных диапазонах, я должен определить значение некоторых функций, определенных x, y, z. Итак, как выполнить сканирование M C на наличие такой проблемы в python и напрямую ввести эти разные наборы данных в мою программу?

1 Ответ

1 голос
/ 12 февраля 2020

Так как Монте-Карло просто набрасывает числа в функции и видит, что прилипает, это как-то так в ванили Python.

import random

def fun(x, y, z):
    return (x * y) + z

trials = []

for i in range(4000):
    x = random.uniform(4, 8)
    y = random.uniform(-5, 7)
    z = random.uniform(1, 9)
    value = fun(x, y, z)
    trials.append(((x, y, z), value))

Если вы хотите, вы, вероятно, можете ускорить процесс предварительное создание всех значений x / y / z в numpy:

import numpy as np

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


def fun(x, y, z):
    return (x * y) + z


x = random_range(4000, 4, 8)
y = random_range(4000, -5, 7)
z = random_range(4000, 1, 9)

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

(также может быть способ сделать Numpy call fun.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...