Редкой библиотеке математики можно доверять? [закрытый]

Это дорогостоящая операция np.array(list(combinations(n_lst,2)),dtype=int), потому что python должен сканировать каждого члена списка, проверять, является ли элемент «int-совместимым», преобразовывать его в целое число и сохранять в массиве.

Чтобы достичь непревзойденной производительности, вы должны продумать весь алгоритм в неповоротливом. Например:

In [63]: n_lst=list(range(100))

In [64]: %timeit twosum1(n_lst)
11.2 ms ± 1.64 ms per loop (mean ± std. dev. of 7 runs, 100 loops each)


In [65]: np.vstack(np.where(np.add.outer(n_lst,n_lst)==7)).T
Out[65]: 
array([[0, 7],
       [1, 6],
       [2, 5],
       [3, 4],
       [4, 3],
       [5, 2],
       [6, 1],
       [7, 0]], dtype=int64)

In [66]: %timeit np.vstack(np.where(np.add.outer(n_lst,n_lst)==7)).T
306 µs ± 19 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

Таким образом, вы выиграете фактор от 30 до 100, в зависимости от проблемы.

5
задан Gili 14 February 2009 в 04:47
поделиться

3 ответа

Редкая Математика утверждает, что прошла Несгибаемые тесты. Это так надежно, как я знаю.

Можно всегда быть ученым и повторно выполнять те тесты для себя как независимая проверка.

4
ответ дан 13 December 2019 в 05:43
поделиться

Хороший вопрос ;)

Все алгоритмы RNG являются известными алгоритмами, изобретенными людьми, более умными, чем я. Я - программист, не математик. Я только что портировал исходный C код. Таким образом, необходимо надеяться, что я не представил ошибок в преобразовании.

Как с большей частью программного обеспечения с открытым исходным кодом, нет НИКАКОЙ ГАРАНТИИ. Если Вы хотите использовать его для моделирований, я думаю, что это - очень хороший выбор. Если бы Вы хотите использовать его для криптографии, что-то как Fortuna было бы лучше.

Математика несвободного городского населения не используется так широко как некоторые библиотеки. Это добирается между 5 и 20 загрузками в неделю. Я не знаю, сколько из тех на самом деле продолжает использовать его в серьезных приложениях. Я использую его для эволюционного вычисления и нескольких тривиальных связанных с покером программ, с которыми я играл.

Я выполнил Консерватора на каждой из реализаций RNG, и она не выделяет дефектов. Тем не менее результаты Консерватора не является самым легким интерпретировать:

Таким образом Вы не должны быть удивлены случайными p-значениями около 0 или 1, такой как.0012 или.9983. Когда немного потока действительно ПЕРЕСТАНЕТ РАБОТАТЬ БОЛЬШОЙ, Вы получите ps of 0 or 1 to six or more places. By all means, do not, as a Statistician might, think that a p < .025 or p> .975 means that the RNG has "failed the test at the .05 level". Such ps происходят среди сотен того КОНСЕРВАТОРА, производит, даже с хорошим RNGs. Поэтому имейте в виду, что "p происходит".

Математика Несвободного городского населения RNGs все удовлетворяют это нечеткое определение успеха. Вне 0.025 существуют одно или два p-значения.. 0,975 диапазона, но ни один, что "приводят к сбою большой". Это сопоставимо с результатами, полученными с SecureRandom Java (и лучше, чем java.util. Случайный, который действительно "перестал работать большой").

Если Вы хотите протестировать это на себя, существует класс под названием DiehardInputGenerator в распределении. Это генерирует файл 12 МБ, что необходимо выполнить Консерватора.

8
ответ дан 13 December 2019 в 05:43
поделиться

Запишите свои собственные тесты.

Основная проверка генератора случайных чисел может быть сделана с помощью теста хи-квадрата

0
ответ дан 13 December 2019 в 05:43
поделиться
Другие вопросы по тегам:

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