| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
|
|
|
| |
In some cases, the replacement is clearly not what is intended,
in those (where setup was called explicitly), I mostly renamed
`setup` to `_setup`.
The `test_ccompile_opt` is a bit confusing, so left it right now
(this will probably fail)
|
|
|
|
|
|
|
|
| |
Logseries previously did not enforce bounds to be strictly exclusive
for the upper bound, where it leads to incorrect behavior.
The NOT_NAN check is removed, since it was never used: The current bounded
version always excludes NaNs.
|
| |
|
|
|
|
|
|
|
| |
Allow bit generators to supply their own constructors to enable Generator
objects using arbitrary bit generators to be supported
closes #22012
|
|
|
|
|
|
|
| |
* Disallow both mean and cov from being complex.
* Raise a TypeError instead of a NotImplementedError if mean or cov is
complex.
* Expand and fix the unit test.
|
|
|
|
|
| |
This commit disallows complex covariances in multivariate_normal
as passing them can silently lead to incorrect results.
|
| |
|
|
|
|
| |
negative_binomial
|
| |
|
| |
|
|
|
|
| |
xref github issue #15201
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The formula to convert a 32 bit random integer to a random float32,
(next_uint32(bitgen_state) >> 9) * (1.0f / 8388608.0f)
shifts by one bit too many, resulting in uniform float32 samples always
having a 0 in the least significant bit. The formula is corrected to
(next_uint32(bitgen_state) >> 8) * (1.0f / 16777216.0f)
Occurrences of the incorrect formula in numpy/random/tests/test_direct.py
were also corrected.
Closes gh-17478.
|
|
|
|
|
| |
This makes the test reproducible. See comments on failing test
in #19540.
|
|
|
|
|
|
| |
Check that out is C-contiguous when using user-supplied arguments
closes #18704
|
|
|
|
| |
Use exponentials rather than generating exponentials via inversion
|
|
|
|
|
|
|
| |
Improve the exception when low is 0 in case the single input
form was used.
closes #14333
|
| |
|
|
|
|
|
|
|
|
| |
Improve error message when the sum of pvals is larger than 1
when the input data is an ndarray
closes #8317
xref #16732
|
|
|
|
|
|
|
|
| |
Apply vonmises fix only to Generator
Add tests for correctness
closes #17378
closes #17275
|
|
|
|
|
|
| |
Remove ndim for non-ndarrays and check axis is 0
closes #18142
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This would trigger:
```
NotImplementedError: Axis argument is only supported on ndarray objects
```
because empty arrays and array scalars would take the "untyped" path.
The bug exists only for Generator, not in RandomState (it doesn't have
axis keyword for `shuffle`), but update both because it keeps
implementations in sync and the change results in more understandable
code also for RandomState.
|
|
|
|
| |
This doesn't qualify for fixing under the NEP.
|
|
|
|
|
|
| |
Check that high is weakly larger than low and raise if now
closes #17905
|
|
|
|
|
|
|
|
|
| |
Tests using MD5 algorithms fail in FIPS Mode because MD5 is not FIPS
compliant.
Replace MD5 with SHA256 to overcome that.
Signed-off-by: Nikola Forró <nforro@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
* ENH: random: Make _shuffle_raw and _shuffle_int standalone functions.
* ENH: random: Add the method `permuted` to Generator.
The method permuted(x, axis=None, out=None) shuffles an array.
Unlike the existing shuffle method, it shuffles the slices along
the given axis independently.
Closes gh-5173.
|
|
|
|
|
|
| |
Check that size is not being broadcast
closes #16833
|
|
|
|
|
|
|
| |
Broadcastable size with inputs does not produce an error when size produces
a smaller output array than the broadcast input shape. Patch checks that
the output shape matches the outer shape of the broadcast fo all inputs and
the size when given.
|
|
|
|
|
|
| |
Refactor polynomial to be unsigned long array
Remove unused code
Fix md5 calculation on BE
|
|
|
|
|
|
| |
Use the original loop order instead of an inverted order
closes #15394
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(#14924)
* Add stick-breaking
* Add tests demonstrating slowness for beta and dirichlet generators for small alpha (and beta) values
* Remove the test for beta with small `a` and `b`
* Switch from standard to stick-breaking method whenever alpha.max() < 0.1
Co-authored-by: Warren Weckesser <warren.weckesser@gmail.com>
Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
Co-authored-by: Sebastian Berg <sebastian@sipsolutions.net>
|
|
|
|
|
|
|
| |
Add repeatability tests for when the range of the integers is `2**32`
(and `2**32 +/- 1` for good measure) with broadcasting. The underlying
functions called by Generator.integers and random.randint when the
inputs are broadcast are different than when the inputs are scalars.
|
|
|
|
|
|
|
|
|
|
|
|
| |
When the input to Generator.integers was 2**32, the value 2**32-1
was being passed as the `rng` argument to the 32-bit Lemire method,
but that method requires `rng` be strictly less then 2**32-1.
The fix was to handle 2**32-1 by calling next_uint32 directly.
This also works for the legacy code without changing the stream
of random integers from `randint`.
Closes gh-16066.
|
|
|
|
|
| |
Only one dimensional alpha paramter is currently supported, but higher dimensions were silently allowed and gave an incorrect results. This fixes the regression. In the future, the API could be extended to allow higher dimensional arrays for alpha.
Fixes gh-15915
|
|\
| |
| | |
BUG: Check that `pvals` is 1D in `_generator.multinomial`.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Make `Generator.negative_binomial` raise a ValueError if p=0.
`negative_binomial(n, p)` draws samples from the distribution of
the number of failures until n successes are encountered. If p is 0,
then a success is never encountered, so the probability distribution
is 0 for any finite number of failures. In other words, it is not
really a meaningful distribution, so we disallow p=0.
Closes gh-15913.
|
|/
|
|
| |
Fixes #15871
|
|
|
|
|
|
|
| |
Inheriting from object was necessary for Python 2 compatibility to use
new-style classes. In Python 3, this is unnecessary as there are no
old-style classes.
Dropping the object is more idiomatic Python.
|
| |
|
|
|
|
| |
Relates to gh-6103
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When an 8 or 16 bit dtype was given to the integers() method of the
Generator class, the resulting sample was biased. The problem was
the lines of the form
const uint8_t threshold = -rng_excl % rng_excl;
in the implementations of Lemire's method, in the C file
distributions.c. The intent was to compute
(UINT8_MAX+1 - rng_excl) % rng_excl
However, when the type of rng_excl has integer conversion rank lower
than a C int (which is almost certainly the case for the 8 and 16
bit types), the terms in the expression -rng_excl % rng_excl are
promoted to int, and the result of the calculation is always 0.
The fix is to make the expression explicit, and write it as
const uint8_t threshold = (UINT8_MAX - rng) % rng_excl;
rng is used, because rng_excl is simply rng + 1; by using rng, we
we only need the constant UINT#_MAX, without the extra +1.
For consistency, I made the same change for all the data types
(8, 16, 32 and 64 bit).
Closes gh-14774.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The new method
multivariate_hypergeometric(self, object colors, object nsample,
size=None, method='marginals')
of the class numpy.random.Generator implements the multivariate
hypergeometric distribution; see
https://en.wikipedia.org/wiki/Hypergeometric_distribution,
specifically the section "Multivariate hypergeometric distribution".
Two algorithms are implemented. The user selects which algorithm
to use with the `method` parameter. The default, `method='marginals'`,
is based on repeated calls of the univariate hypergeometric
distribution function. The other algorithm, selected with
`method='count'`, is a brute-force method that allocates an
internal array of length ``sum(colors)``. It should only be used
when that value is small, but it can be much faster than the
"marginals" algorithm in that case.
The C implementations of the two methods are in the files
random_mvhg_count.c and random_mvhg_marginals.c in
numpy/random/src/distributions.
|
| |
| |
| |
| |
| |
| |
| | |
When an axis argument was given, shuffle was using the original length of
the array instead of the length of the given axis. This meant that, for
example, if an array with shape (2, 10) was shuffled with axis=1, only the
first two columns were shuffled.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* fixing segfault error in np.random.permutation(x) where x is str
* removed whitespace
* changing error type to ValueError
* changing error type to ValueError
* changing error type to ValueError
* tests
* changed error to IndexError for backward compatibility with numpy 1.16
* fixes numpy.randomstate.permutation segfault too
* Rolled back to ValueError for Generator.permutation() for all 0-dimensional
* fixes refuige erro and rolls backs to AxisError
|
| | |
|