myPlugin.start($val); // tried this, didn't work
Это не работает, потому что $val
не определено для javascript, т.е. php ничего не выводил для $val
. Попробуйте просмотреть источник в своем браузере, и вот что вы увидите:
myPlugin.start(); // tried this, didn't work
И
<?php myPlugin.start($val); ?> // this didn't work either
Это не работает, потому что php попытается обработать myPlugin
как константа, и когда это не удается, он попытается рассматривать его как строку 'myPlugin'
, которую он попытается связать с выходом функции php start()
, и поскольку это не определено, это приведет к фатальной ошибке
И
myPlugin.start(<?=$val?> // this works sometimes, but sometimes it fails
Хотя это, скорее всего, сработает, так как php создает допустимый javascript с ожидаемыми аргументами, если он не работает, скорее всего, потому что myPlugin
не готов все же. Проверьте свой порядок выполнения.
Также вы должны заметить, что установка php out небезопасна и должна быть отфильтрована с помощью json_encode()
EDIT
Поскольку я didn Не заметите отсутствующую скобку в myPlugin.start(<?=$val?>
: - \
Как указывает @Second Rikudo, для правильной работы $val
необходимо будет содержать закрывающую скобку, например: $val="42);"
Значение php теперь будет генерировать myPlugin.start(42);
и будет работать как ожидалось при выполнении javascript
Нормальное распределение по определению распространяется от -inf на + inf, поэтому то, о чем вы просите, не имеет смысла математически.
Вы можете принять нормальное распределение и принять абсолютное значение «клип» в положительные значения или просто отбросить отрицательные значения, но вы должны понимать, что он больше не будет нормальным распределением.
Вы можете компенсировать весь ваш массив самым низким значением (слева больше) массива. То, что вы получаете, может не быть действительно «нормальным распределением», но в рамках вашей работы, касающейся конечного массива, вы можете убедиться, что значения положительны и соответствуют кривой колокола.
>>> mu,sigma = (0,1.0)
>>> s = np.random.normal(mu, 1.0, 100)
>>> s
array([-0.58017653, 0.50991809, -1.13431539, -2.34436721, -1.20175652,
0.56225648, 0.66032708, -0.98493441, 2.72538462, -1.28928887])
>>> np.min(s)
-2.3443672118476226
>>> abs(np.min(s))
2.3443672118476226
>>> np.add(s,abs(np.min(s)))
array([ 1.76419069, 2.85428531, 1.21005182, 0. , 1.14261069,
2.90662369, 3.00469429, 1.3594328 , 5.06975183, 1.05507835])
как насчет использования логнормального в этих строках:
mu = np.mean(np.log(list))
sigma = np.std(np.log(list))
new_list = np.random.lognormal(mu, sigma, length_of_new_list)
data = np.random.randint (low = 1, high = 100, size = (4,4), dtype = 'int')
Я предполагаю, что вы имеете в виду, что вы хотите изменить плотность вероятности так, чтобы она была такой же, как и нормальная, в положительном диапазоне, а нуль - отрицательной. Это довольно распространенный практический случай. В таком случае вы не можете просто взять абсолютное значение генерируемых нормальных случайных величин. Вместо этого вы должны создать новое независимое нормально распределенное число, пока не придумаете положительный. Один из способов сделать это рекурсивно, см. Ниже.
import numpy as np
def PosNormal(mean, sigma):
x = np.random.normal(xbar,delta_xbar,1)
return(x if x>=0 else PosNormal(mean,sigma))
abs()
– user1406177
13 February 2017 в 10:12