mirror of
https://github.com/bvanroll/college-python-image.git
synced 2025-09-01 05:22:50 +00:00
first commit
This commit is contained in:
122
projecten1/lib/python3.6/site-packages/numpy/random/__init__.py
Normal file
122
projecten1/lib/python3.6/site-packages/numpy/random/__init__.py
Normal file
@@ -0,0 +1,122 @@
|
||||
"""
|
||||
========================
|
||||
Random Number Generation
|
||||
========================
|
||||
|
||||
==================== =========================================================
|
||||
Utility functions
|
||||
==============================================================================
|
||||
random Uniformly distributed values of a given shape.
|
||||
bytes Uniformly distributed random bytes.
|
||||
random_integers Uniformly distributed integers in a given range.
|
||||
random_sample Uniformly distributed floats in a given range.
|
||||
random Alias for random_sample
|
||||
ranf Alias for random_sample
|
||||
sample Alias for random_sample
|
||||
choice Generate a weighted random sample from a given array-like
|
||||
permutation Randomly permute a sequence / generate a random sequence.
|
||||
shuffle Randomly permute a sequence in place.
|
||||
seed Seed the random number generator.
|
||||
==================== =========================================================
|
||||
|
||||
==================== =========================================================
|
||||
Compatibility functions
|
||||
==============================================================================
|
||||
rand Uniformly distributed values.
|
||||
randn Normally distributed values.
|
||||
ranf Uniformly distributed floating point numbers.
|
||||
randint Uniformly distributed integers in a given range.
|
||||
==================== =========================================================
|
||||
|
||||
==================== =========================================================
|
||||
Univariate distributions
|
||||
==============================================================================
|
||||
beta Beta distribution over ``[0, 1]``.
|
||||
binomial Binomial distribution.
|
||||
chisquare :math:`\\chi^2` distribution.
|
||||
exponential Exponential distribution.
|
||||
f F (Fisher-Snedecor) distribution.
|
||||
gamma Gamma distribution.
|
||||
geometric Geometric distribution.
|
||||
gumbel Gumbel distribution.
|
||||
hypergeometric Hypergeometric distribution.
|
||||
laplace Laplace distribution.
|
||||
logistic Logistic distribution.
|
||||
lognormal Log-normal distribution.
|
||||
logseries Logarithmic series distribution.
|
||||
negative_binomial Negative binomial distribution.
|
||||
noncentral_chisquare Non-central chi-square distribution.
|
||||
noncentral_f Non-central F distribution.
|
||||
normal Normal / Gaussian distribution.
|
||||
pareto Pareto distribution.
|
||||
poisson Poisson distribution.
|
||||
power Power distribution.
|
||||
rayleigh Rayleigh distribution.
|
||||
triangular Triangular distribution.
|
||||
uniform Uniform distribution.
|
||||
vonmises Von Mises circular distribution.
|
||||
wald Wald (inverse Gaussian) distribution.
|
||||
weibull Weibull distribution.
|
||||
zipf Zipf's distribution over ranked data.
|
||||
==================== =========================================================
|
||||
|
||||
==================== =========================================================
|
||||
Multivariate distributions
|
||||
==============================================================================
|
||||
dirichlet Multivariate generalization of Beta distribution.
|
||||
multinomial Multivariate generalization of the binomial distribution.
|
||||
multivariate_normal Multivariate generalization of the normal distribution.
|
||||
==================== =========================================================
|
||||
|
||||
==================== =========================================================
|
||||
Standard distributions
|
||||
==============================================================================
|
||||
standard_cauchy Standard Cauchy-Lorentz distribution.
|
||||
standard_exponential Standard exponential distribution.
|
||||
standard_gamma Standard Gamma distribution.
|
||||
standard_normal Standard normal distribution.
|
||||
standard_t Standard Student's t-distribution.
|
||||
==================== =========================================================
|
||||
|
||||
==================== =========================================================
|
||||
Internal functions
|
||||
==============================================================================
|
||||
get_state Get tuple representing internal state of generator.
|
||||
set_state Set state of generator.
|
||||
==================== =========================================================
|
||||
|
||||
"""
|
||||
from __future__ import division, absolute_import, print_function
|
||||
|
||||
import warnings
|
||||
|
||||
# To get sub-modules
|
||||
from .info import __doc__, __all__
|
||||
|
||||
|
||||
with warnings.catch_warnings():
|
||||
warnings.filterwarnings("ignore", message="numpy.ndarray size changed")
|
||||
from .mtrand import *
|
||||
|
||||
# Some aliases:
|
||||
ranf = random = sample = random_sample
|
||||
__all__.extend(['ranf', 'random', 'sample'])
|
||||
|
||||
def __RandomState_ctor():
|
||||
"""Return a RandomState instance.
|
||||
|
||||
This function exists solely to assist (un)pickling.
|
||||
|
||||
Note that the state of the RandomState returned here is irrelevant, as this function's
|
||||
entire purpose is to return a newly allocated RandomState whose state pickle can set.
|
||||
Consequently the RandomState returned by this function is a freshly allocated copy
|
||||
with a seed=0.
|
||||
|
||||
See https://github.com/numpy/numpy/issues/4763 for a detailed discussion
|
||||
|
||||
"""
|
||||
return RandomState(seed=0)
|
||||
|
||||
from numpy.testing import _numpy_tester
|
||||
test = _numpy_tester().test
|
||||
bench = _numpy_tester().bench
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
139
projecten1/lib/python3.6/site-packages/numpy/random/info.py
Normal file
139
projecten1/lib/python3.6/site-packages/numpy/random/info.py
Normal file
@@ -0,0 +1,139 @@
|
||||
"""
|
||||
========================
|
||||
Random Number Generation
|
||||
========================
|
||||
|
||||
==================== =========================================================
|
||||
Utility functions
|
||||
==============================================================================
|
||||
random_sample Uniformly distributed floats over ``[0, 1)``.
|
||||
random Alias for `random_sample`.
|
||||
bytes Uniformly distributed random bytes.
|
||||
random_integers Uniformly distributed integers in a given range.
|
||||
permutation Randomly permute a sequence / generate a random sequence.
|
||||
shuffle Randomly permute a sequence in place.
|
||||
seed Seed the random number generator.
|
||||
choice Random sample from 1-D array.
|
||||
|
||||
==================== =========================================================
|
||||
|
||||
==================== =========================================================
|
||||
Compatibility functions
|
||||
==============================================================================
|
||||
rand Uniformly distributed values.
|
||||
randn Normally distributed values.
|
||||
ranf Uniformly distributed floating point numbers.
|
||||
randint Uniformly distributed integers in a given range.
|
||||
==================== =========================================================
|
||||
|
||||
==================== =========================================================
|
||||
Univariate distributions
|
||||
==============================================================================
|
||||
beta Beta distribution over ``[0, 1]``.
|
||||
binomial Binomial distribution.
|
||||
chisquare :math:`\\chi^2` distribution.
|
||||
exponential Exponential distribution.
|
||||
f F (Fisher-Snedecor) distribution.
|
||||
gamma Gamma distribution.
|
||||
geometric Geometric distribution.
|
||||
gumbel Gumbel distribution.
|
||||
hypergeometric Hypergeometric distribution.
|
||||
laplace Laplace distribution.
|
||||
logistic Logistic distribution.
|
||||
lognormal Log-normal distribution.
|
||||
logseries Logarithmic series distribution.
|
||||
negative_binomial Negative binomial distribution.
|
||||
noncentral_chisquare Non-central chi-square distribution.
|
||||
noncentral_f Non-central F distribution.
|
||||
normal Normal / Gaussian distribution.
|
||||
pareto Pareto distribution.
|
||||
poisson Poisson distribution.
|
||||
power Power distribution.
|
||||
rayleigh Rayleigh distribution.
|
||||
triangular Triangular distribution.
|
||||
uniform Uniform distribution.
|
||||
vonmises Von Mises circular distribution.
|
||||
wald Wald (inverse Gaussian) distribution.
|
||||
weibull Weibull distribution.
|
||||
zipf Zipf's distribution over ranked data.
|
||||
==================== =========================================================
|
||||
|
||||
==================== =========================================================
|
||||
Multivariate distributions
|
||||
==============================================================================
|
||||
dirichlet Multivariate generalization of Beta distribution.
|
||||
multinomial Multivariate generalization of the binomial distribution.
|
||||
multivariate_normal Multivariate generalization of the normal distribution.
|
||||
==================== =========================================================
|
||||
|
||||
==================== =========================================================
|
||||
Standard distributions
|
||||
==============================================================================
|
||||
standard_cauchy Standard Cauchy-Lorentz distribution.
|
||||
standard_exponential Standard exponential distribution.
|
||||
standard_gamma Standard Gamma distribution.
|
||||
standard_normal Standard normal distribution.
|
||||
standard_t Standard Student's t-distribution.
|
||||
==================== =========================================================
|
||||
|
||||
==================== =========================================================
|
||||
Internal functions
|
||||
==============================================================================
|
||||
get_state Get tuple representing internal state of generator.
|
||||
set_state Set state of generator.
|
||||
==================== =========================================================
|
||||
|
||||
"""
|
||||
from __future__ import division, absolute_import, print_function
|
||||
|
||||
depends = ['core']
|
||||
|
||||
__all__ = [
|
||||
'beta',
|
||||
'binomial',
|
||||
'bytes',
|
||||
'chisquare',
|
||||
'choice',
|
||||
'dirichlet',
|
||||
'exponential',
|
||||
'f',
|
||||
'gamma',
|
||||
'geometric',
|
||||
'get_state',
|
||||
'gumbel',
|
||||
'hypergeometric',
|
||||
'laplace',
|
||||
'logistic',
|
||||
'lognormal',
|
||||
'logseries',
|
||||
'multinomial',
|
||||
'multivariate_normal',
|
||||
'negative_binomial',
|
||||
'noncentral_chisquare',
|
||||
'noncentral_f',
|
||||
'normal',
|
||||
'pareto',
|
||||
'permutation',
|
||||
'poisson',
|
||||
'power',
|
||||
'rand',
|
||||
'randint',
|
||||
'randn',
|
||||
'random_integers',
|
||||
'random_sample',
|
||||
'rayleigh',
|
||||
'seed',
|
||||
'set_state',
|
||||
'shuffle',
|
||||
'standard_cauchy',
|
||||
'standard_exponential',
|
||||
'standard_gamma',
|
||||
'standard_normal',
|
||||
'standard_t',
|
||||
'triangular',
|
||||
'uniform',
|
||||
'vonmises',
|
||||
'wald',
|
||||
'weibull',
|
||||
'zipf'
|
||||
]
|
Binary file not shown.
226
projecten1/lib/python3.6/site-packages/numpy/random/randomkit.h
Normal file
226
projecten1/lib/python3.6/site-packages/numpy/random/randomkit.h
Normal file
@@ -0,0 +1,226 @@
|
||||
/* Random kit 1.3 */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2003-2005, Jean-Sebastien Roy (js@jeannot.org)
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included
|
||||
* in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/* @(#) $Jeannot: randomkit.h,v 1.24 2005/07/21 22:14:09 js Exp $ */
|
||||
|
||||
/*
|
||||
* Typical use:
|
||||
*
|
||||
* {
|
||||
* rk_state state;
|
||||
* unsigned long seed = 1, random_value;
|
||||
*
|
||||
* rk_seed(seed, &state); // Initialize the RNG
|
||||
* ...
|
||||
* random_value = rk_random(&state); // Generate random values in [0..RK_MAX]
|
||||
* }
|
||||
*
|
||||
* Instead of rk_seed, you can use rk_randomseed which will get a random seed
|
||||
* from /dev/urandom (or the clock, if /dev/urandom is unavailable):
|
||||
*
|
||||
* {
|
||||
* rk_state state;
|
||||
* unsigned long random_value;
|
||||
*
|
||||
* rk_randomseed(&state); // Initialize the RNG with a random seed
|
||||
* ...
|
||||
* random_value = rk_random(&state); // Generate random values in [0..RK_MAX]
|
||||
* }
|
||||
*/
|
||||
|
||||
/*
|
||||
* Useful macro:
|
||||
* RK_DEV_RANDOM: the device used for random seeding.
|
||||
* defaults to "/dev/urandom"
|
||||
*/
|
||||
|
||||
#ifndef _RANDOMKIT_
|
||||
#define _RANDOMKIT_
|
||||
|
||||
#include <stddef.h>
|
||||
#include <numpy/npy_common.h>
|
||||
|
||||
|
||||
#define RK_STATE_LEN 624
|
||||
|
||||
typedef struct rk_state_
|
||||
{
|
||||
unsigned long key[RK_STATE_LEN];
|
||||
int pos;
|
||||
int has_gauss; /* !=0: gauss contains a gaussian deviate */
|
||||
double gauss;
|
||||
|
||||
/* The rk_state structure has been extended to store the following
|
||||
* information for the binomial generator. If the input values of n or p
|
||||
* are different than nsave and psave, then the other parameters will be
|
||||
* recomputed. RTK 2005-09-02 */
|
||||
|
||||
int has_binomial; /* !=0: following parameters initialized for
|
||||
binomial */
|
||||
double psave;
|
||||
long nsave;
|
||||
double r;
|
||||
double q;
|
||||
double fm;
|
||||
long m;
|
||||
double p1;
|
||||
double xm;
|
||||
double xl;
|
||||
double xr;
|
||||
double c;
|
||||
double laml;
|
||||
double lamr;
|
||||
double p2;
|
||||
double p3;
|
||||
double p4;
|
||||
|
||||
}
|
||||
rk_state;
|
||||
|
||||
typedef enum {
|
||||
RK_NOERR = 0, /* no error */
|
||||
RK_ENODEV = 1, /* no RK_DEV_RANDOM device */
|
||||
RK_ERR_MAX = 2
|
||||
} rk_error;
|
||||
|
||||
/* error strings */
|
||||
extern char *rk_strerror[RK_ERR_MAX];
|
||||
|
||||
/* Maximum generated random value */
|
||||
#define RK_MAX 0xFFFFFFFFUL
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Initialize the RNG state using the given seed.
|
||||
*/
|
||||
extern void rk_seed(unsigned long seed, rk_state *state);
|
||||
|
||||
/*
|
||||
* Initialize the RNG state using a random seed.
|
||||
* Uses /dev/random or, when unavailable, the clock (see randomkit.c).
|
||||
* Returns RK_NOERR when no errors occurs.
|
||||
* Returns RK_ENODEV when the use of RK_DEV_RANDOM failed (for example because
|
||||
* there is no such device). In this case, the RNG was initialized using the
|
||||
* clock.
|
||||
*/
|
||||
extern rk_error rk_randomseed(rk_state *state);
|
||||
|
||||
/*
|
||||
* Returns a random unsigned long between 0 and RK_MAX inclusive
|
||||
*/
|
||||
extern unsigned long rk_random(rk_state *state);
|
||||
|
||||
/*
|
||||
* Returns a random long between 0 and LONG_MAX inclusive
|
||||
*/
|
||||
extern long rk_long(rk_state *state);
|
||||
|
||||
/*
|
||||
* Returns a random unsigned long between 0 and ULONG_MAX inclusive
|
||||
*/
|
||||
extern unsigned long rk_ulong(rk_state *state);
|
||||
|
||||
/*
|
||||
* Returns a random unsigned long between 0 and max inclusive.
|
||||
*/
|
||||
extern unsigned long rk_interval(unsigned long max, rk_state *state);
|
||||
|
||||
/*
|
||||
* Fills an array with cnt random npy_uint64 between off and off + rng
|
||||
* inclusive. The numbers wrap if rng is sufficiently large.
|
||||
*/
|
||||
extern void rk_random_uint64(npy_uint64 off, npy_uint64 rng, npy_intp cnt,
|
||||
npy_uint64 *out, rk_state *state);
|
||||
|
||||
/*
|
||||
* Fills an array with cnt random npy_uint32 between off and off + rng
|
||||
* inclusive. The numbers wrap if rng is sufficiently large.
|
||||
*/
|
||||
extern void rk_random_uint32(npy_uint32 off, npy_uint32 rng, npy_intp cnt,
|
||||
npy_uint32 *out, rk_state *state);
|
||||
|
||||
/*
|
||||
* Fills an array with cnt random npy_uint16 between off and off + rng
|
||||
* inclusive. The numbers wrap if rng is sufficiently large.
|
||||
*/
|
||||
extern void rk_random_uint16(npy_uint16 off, npy_uint16 rng, npy_intp cnt,
|
||||
npy_uint16 *out, rk_state *state);
|
||||
|
||||
/*
|
||||
* Fills an array with cnt random npy_uint8 between off and off + rng
|
||||
* inclusive. The numbers wrap if rng is sufficiently large.
|
||||
*/
|
||||
extern void rk_random_uint8(npy_uint8 off, npy_uint8 rng, npy_intp cnt,
|
||||
npy_uint8 *out, rk_state *state);
|
||||
|
||||
/*
|
||||
* Fills an array with cnt random npy_bool between off and off + rng
|
||||
* inclusive. It is assumed tha npy_bool as the same size as npy_uint8.
|
||||
*/
|
||||
extern void rk_random_bool(npy_bool off, npy_bool rng, npy_intp cnt,
|
||||
npy_bool *out, rk_state *state);
|
||||
|
||||
/*
|
||||
* Returns a random double between 0.0 and 1.0, 1.0 excluded.
|
||||
*/
|
||||
extern double rk_double(rk_state *state);
|
||||
|
||||
/*
|
||||
* fill the buffer with size random bytes
|
||||
*/
|
||||
extern void rk_fill(void *buffer, size_t size, rk_state *state);
|
||||
|
||||
/*
|
||||
* fill the buffer with randombytes from the random device
|
||||
* Returns RK_ENODEV if the device is unavailable, or RK_NOERR if it is
|
||||
* On Unix, if strong is defined, RK_DEV_RANDOM is used. If not, RK_DEV_URANDOM
|
||||
* is used instead. This parameter has no effect on Windows.
|
||||
* Warning: on most unixes RK_DEV_RANDOM will wait for enough entropy to answer
|
||||
* which can take a very long time on quiet systems.
|
||||
*/
|
||||
extern rk_error rk_devfill(void *buffer, size_t size, int strong);
|
||||
|
||||
/*
|
||||
* fill the buffer using rk_devfill if the random device is available and using
|
||||
* rk_fill if is is not
|
||||
* parameters have the same meaning as rk_fill and rk_devfill
|
||||
* Returns RK_ENODEV if the device is unavailable, or RK_NOERR if it is
|
||||
*/
|
||||
extern rk_error rk_altfill(void *buffer, size_t size, int strong,
|
||||
rk_state *state);
|
||||
|
||||
/*
|
||||
* return a random gaussian deviate with variance unity and zero mean.
|
||||
*/
|
||||
extern double rk_gauss(rk_state *state);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _RANDOMKIT_ */
|
64
projecten1/lib/python3.6/site-packages/numpy/random/setup.py
Normal file
64
projecten1/lib/python3.6/site-packages/numpy/random/setup.py
Normal file
@@ -0,0 +1,64 @@
|
||||
from __future__ import division, print_function
|
||||
|
||||
from os.path import join, split, dirname
|
||||
import os
|
||||
import sys
|
||||
from distutils.dep_util import newer
|
||||
from distutils.msvccompiler import get_build_version as get_msvc_build_version
|
||||
|
||||
def needs_mingw_ftime_workaround():
|
||||
# We need the mingw workaround for _ftime if the msvc runtime version is
|
||||
# 7.1 or above and we build with mingw ...
|
||||
# ... but we can't easily detect compiler version outside distutils command
|
||||
# context, so we will need to detect in randomkit whether we build with gcc
|
||||
msver = get_msvc_build_version()
|
||||
if msver and msver >= 8:
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
def configuration(parent_package='',top_path=None):
|
||||
from numpy.distutils.misc_util import Configuration, get_mathlibs
|
||||
config = Configuration('random', parent_package, top_path)
|
||||
|
||||
def generate_libraries(ext, build_dir):
|
||||
config_cmd = config.get_config_cmd()
|
||||
libs = get_mathlibs()
|
||||
if sys.platform == 'win32':
|
||||
libs.append('Advapi32')
|
||||
ext.libraries.extend(libs)
|
||||
return None
|
||||
|
||||
# enable unix large file support on 32 bit systems
|
||||
# (64 bit off_t, lseek -> lseek64 etc.)
|
||||
if sys.platform[:3] == "aix":
|
||||
defs = [('_LARGE_FILES', None)]
|
||||
else:
|
||||
defs = [('_FILE_OFFSET_BITS', '64'),
|
||||
('_LARGEFILE_SOURCE', '1'),
|
||||
('_LARGEFILE64_SOURCE', '1')]
|
||||
if needs_mingw_ftime_workaround():
|
||||
defs.append(("NPY_NEEDS_MINGW_TIME_WORKAROUND", None))
|
||||
|
||||
libs = []
|
||||
# Configure mtrand
|
||||
config.add_extension('mtrand',
|
||||
sources=[join('mtrand', x) for x in
|
||||
['mtrand.c', 'randomkit.c', 'initarray.c',
|
||||
'distributions.c']]+[generate_libraries],
|
||||
libraries=libs,
|
||||
depends=[join('mtrand', '*.h'),
|
||||
join('mtrand', '*.pyx'),
|
||||
join('mtrand', '*.pxi'),],
|
||||
define_macros=defs,
|
||||
)
|
||||
|
||||
config.add_data_files(('.', join('mtrand', 'randomkit.h')))
|
||||
config.add_data_dir('tests')
|
||||
|
||||
return config
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
from numpy.distutils.core import setup
|
||||
setup(configuration=configuration)
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,138 @@
|
||||
from __future__ import division, absolute_import, print_function
|
||||
|
||||
import sys
|
||||
from numpy.testing import (
|
||||
run_module_suite, assert_, assert_array_equal, assert_raises,
|
||||
)
|
||||
from numpy import random
|
||||
from numpy.compat import long
|
||||
import numpy as np
|
||||
|
||||
|
||||
class TestRegression(object):
|
||||
|
||||
def test_VonMises_range(self):
|
||||
# Make sure generated random variables are in [-pi, pi].
|
||||
# Regression test for ticket #986.
|
||||
for mu in np.linspace(-7., 7., 5):
|
||||
r = random.mtrand.vonmises(mu, 1, 50)
|
||||
assert_(np.all(r > -np.pi) and np.all(r <= np.pi))
|
||||
|
||||
def test_hypergeometric_range(self):
|
||||
# Test for ticket #921
|
||||
assert_(np.all(np.random.hypergeometric(3, 18, 11, size=10) < 4))
|
||||
assert_(np.all(np.random.hypergeometric(18, 3, 11, size=10) > 0))
|
||||
|
||||
# Test for ticket #5623
|
||||
args = [
|
||||
(2**20 - 2, 2**20 - 2, 2**20 - 2), # Check for 32-bit systems
|
||||
]
|
||||
is_64bits = sys.maxsize > 2**32
|
||||
if is_64bits and sys.platform != 'win32':
|
||||
args.append((2**40 - 2, 2**40 - 2, 2**40 - 2)) # Check for 64-bit systems
|
||||
for arg in args:
|
||||
assert_(np.random.hypergeometric(*arg) > 0)
|
||||
|
||||
def test_logseries_convergence(self):
|
||||
# Test for ticket #923
|
||||
N = 1000
|
||||
np.random.seed(0)
|
||||
rvsn = np.random.logseries(0.8, size=N)
|
||||
# these two frequency counts should be close to theoretical
|
||||
# numbers with this large sample
|
||||
# theoretical large N result is 0.49706795
|
||||
freq = np.sum(rvsn == 1) / float(N)
|
||||
msg = "Frequency was %f, should be > 0.45" % freq
|
||||
assert_(freq > 0.45, msg)
|
||||
# theoretical large N result is 0.19882718
|
||||
freq = np.sum(rvsn == 2) / float(N)
|
||||
msg = "Frequency was %f, should be < 0.23" % freq
|
||||
assert_(freq < 0.23, msg)
|
||||
|
||||
def test_permutation_longs(self):
|
||||
np.random.seed(1234)
|
||||
a = np.random.permutation(12)
|
||||
np.random.seed(1234)
|
||||
b = np.random.permutation(long(12))
|
||||
assert_array_equal(a, b)
|
||||
|
||||
def test_shuffle_mixed_dimension(self):
|
||||
# Test for trac ticket #2074
|
||||
for t in [[1, 2, 3, None],
|
||||
[(1, 1), (2, 2), (3, 3), None],
|
||||
[1, (2, 2), (3, 3), None],
|
||||
[(1, 1), 2, 3, None]]:
|
||||
np.random.seed(12345)
|
||||
shuffled = list(t)
|
||||
random.shuffle(shuffled)
|
||||
assert_array_equal(shuffled, [t[0], t[3], t[1], t[2]])
|
||||
|
||||
def test_call_within_randomstate(self):
|
||||
# Check that custom RandomState does not call into global state
|
||||
m = np.random.RandomState()
|
||||
res = np.array([0, 8, 7, 2, 1, 9, 4, 7, 0, 3])
|
||||
for i in range(3):
|
||||
np.random.seed(i)
|
||||
m.seed(4321)
|
||||
# If m.state is not honored, the result will change
|
||||
assert_array_equal(m.choice(10, size=10, p=np.ones(10)/10.), res)
|
||||
|
||||
def test_multivariate_normal_size_types(self):
|
||||
# Test for multivariate_normal issue with 'size' argument.
|
||||
# Check that the multivariate_normal size argument can be a
|
||||
# numpy integer.
|
||||
np.random.multivariate_normal([0], [[0]], size=1)
|
||||
np.random.multivariate_normal([0], [[0]], size=np.int_(1))
|
||||
np.random.multivariate_normal([0], [[0]], size=np.int64(1))
|
||||
|
||||
def test_beta_small_parameters(self):
|
||||
# Test that beta with small a and b parameters does not produce
|
||||
# NaNs due to roundoff errors causing 0 / 0, gh-5851
|
||||
np.random.seed(1234567890)
|
||||
x = np.random.beta(0.0001, 0.0001, size=100)
|
||||
assert_(not np.any(np.isnan(x)), 'Nans in np.random.beta')
|
||||
|
||||
def test_choice_sum_of_probs_tolerance(self):
|
||||
# The sum of probs should be 1.0 with some tolerance.
|
||||
# For low precision dtypes the tolerance was too tight.
|
||||
# See numpy github issue 6123.
|
||||
np.random.seed(1234)
|
||||
a = [1, 2, 3]
|
||||
counts = [4, 4, 2]
|
||||
for dt in np.float16, np.float32, np.float64:
|
||||
probs = np.array(counts, dtype=dt) / sum(counts)
|
||||
c = np.random.choice(a, p=probs)
|
||||
assert_(c in a)
|
||||
assert_raises(ValueError, np.random.choice, a, p=probs*0.9)
|
||||
|
||||
def test_shuffle_of_array_of_different_length_strings(self):
|
||||
# Test that permuting an array of different length strings
|
||||
# will not cause a segfault on garbage collection
|
||||
# Tests gh-7710
|
||||
np.random.seed(1234)
|
||||
|
||||
a = np.array(['a', 'a' * 1000])
|
||||
|
||||
for _ in range(100):
|
||||
np.random.shuffle(a)
|
||||
|
||||
# Force Garbage Collection - should not segfault.
|
||||
import gc
|
||||
gc.collect()
|
||||
|
||||
def test_shuffle_of_array_of_objects(self):
|
||||
# Test that permuting an array of objects will not cause
|
||||
# a segfault on garbage collection.
|
||||
# See gh-7719
|
||||
np.random.seed(1234)
|
||||
a = np.array([np.arange(1), np.arange(4)])
|
||||
|
||||
for _ in range(1000):
|
||||
np.random.shuffle(a)
|
||||
|
||||
# Force Garbage Collection - should not segfault.
|
||||
import gc
|
||||
gc.collect()
|
||||
|
||||
if __name__ == "__main__":
|
||||
run_module_suite()
|
Reference in New Issue
Block a user