Python вызывает функцию и сохраняет только положительный результат [дубликат]

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

8
задан ustroetz 1 May 2013 в 04:23
поделиться

5 ответов

Нормальное распределение по определению распространяется от -inf на + inf, поэтому то, о чем вы просите, не имеет смысла математически.

Вы можете принять нормальное распределение и принять абсолютное значение «клип» в положительные значения или просто отбросить отрицательные значения, но вы должны понимать, что он больше не будет нормальным распределением.

7
ответ дан wim 21 August 2018 в 22:14
поделиться

Вы можете компенсировать весь ваш массив самым низким значением (слева больше) массива. То, что вы получаете, может не быть действительно «нормальным распределением», но в рамках вашей работы, касающейся конечного массива, вы можете убедиться, что значения положительны и соответствуют кривой колокола.

>>> 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])
1
ответ дан Benny 21 August 2018 в 22:14
поделиться

как насчет использования логнормального в этих строках:

    mu = np.mean(np.log(list))
    sigma = np.std(np.log(list))

    new_list = np.random.lognormal(mu, sigma, length_of_new_list)
0
ответ дан leoneckert 21 August 2018 в 22:14
поделиться

data = np.random.randint (low = 1, high = 100, size = (4,4), dtype = 'int')

0
ответ дан Mahesh Sonavane 21 August 2018 в 22:14
поделиться

Я предполагаю, что вы имеете в виду, что вы хотите изменить плотность вероятности так, чтобы она была такой же, как и нормальная, в положительном диапазоне, а нуль - отрицательной. Это довольно распространенный практический случай. В таком случае вы не можете просто взять абсолютное значение генерируемых нормальных случайных величин. Вместо этого вы должны создать новое независимое нормально распределенное число, пока не придумаете положительный. Один из способов сделать это рекурсивно, см. Ниже.

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))

1
ответ дан smci 21 August 2018 в 22:14
поделиться
  • 1
    Это, вероятно, разумно для некоторых случаев использования, но обратите внимание, что выборка из этого распределения будет смещена в сторону более высоких значений, особенно если среднее значение около нуля. Кроме того, вы можете получить переполнение стека, если вам особенно не повезло. – vroomfondel 12 September 2016 в 22:47
  • 2
    Да, это уже не нормальное распространение, мы изменили его, у него есть другой PDF, усеченный на ноль. Но я думаю, что это был вопрос, и это часто бывает практичным. Что касается вашего беспокойства по поводу переполнения стека в этом случае, никто не ТАК НЕВОЗДАЕТ, если у вас всего несколько байт ОЗУ. – Gena Kukartsev 28 September 2016 в 16:32
  • 3
    Что касается вашего беспокойства о переполнении стека в этом случае, вы правы, если вас интересует только правый хвост только для сигмы, т. Е. Если среднее значение распределения отрицательно на несколько сигм. В этом случае производительность этого решения будет ухудшаться и, в конечном счете, будет переполняться. Но я сомневаюсь, что это предполагаемый прецедент. Это скорее быстрый взлом. – Gena Kukartsev 28 September 2016 в 16:39
  • 4
    Кажется действительно неэффективным, так как вы также можете использовать abs() – user1406177 13 February 2017 в 10:12
  • 5
    Нет, использование abs () изменит форму распределения. Разница заключается в отключении отрицательного хвоста и «переворачивании». это и добавление к остальной части распределения. Это будет непропорционально раздувать плотность вероятности вблизи нуля. Вы можете утверждать, что он удовлетворяет исходному вопросу: он будет давать только положительные числа, но из другого и довольно странного распределения. – Gena Kukartsev 20 February 2017 в 19:35
Другие вопросы по тегам:

Похожие вопросы: