From f1cca04886d4f63f7b1ed5b382986af3a9ee6a61 Mon Sep 17 00:00:00 2001 From: Travis Oliphant Date: Fri, 4 Aug 2006 23:32:12 +0000 Subject: Many name-changes in oldnumeric. This may break some numpy code that was using the oldnumeric interface. --- numpy/oldnumeric/random_array.py | 268 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 268 insertions(+) create mode 100644 numpy/oldnumeric/random_array.py (limited to 'numpy/oldnumeric/random_array.py') diff --git a/numpy/oldnumeric/random_array.py b/numpy/oldnumeric/random_array.py new file mode 100644 index 000000000..061465d02 --- /dev/null +++ b/numpy/oldnumeric/random_array.py @@ -0,0 +1,268 @@ +# Backward compatible module for RandomArray + +__all__ = ['ArgumentError','F','beta','binomial','chi_square', 'exponential', 'gamma', 'get_seed', + 'mean_var_test', 'multinomial', 'multivariate_normal', 'negative_binomial', + 'noncentral_F', 'noncentral_chi_square', 'normal', 'permutation', 'poisson', 'randint', + 'random', 'random_integers', 'seed', 'standard_normal', 'uniform'] + +ArgumentError = ValueError + +import numpy.random.mtrand as mt +import numpy as Numeric + +from types import IntType + +def seed(x=0, y=0): + if (x == 0 or y == 0): + mt.seed() + else: + mt.seed((x,y)) + +def get_seed(): + raise NotImplementedError, \ + "If you want to save the state of the random number generator.\n"\ + "Then you should use obj = numpy.random.get_state() followed by.\n"\ + "numpy.random.set_state(obj)." + +def random(shape=[]): + "random(n) or random([n, m, ...]) returns array of random numbers" + if shape == []: + shape = None + return mt.random_sample(shape) + +def uniform(minimum, maximum, shape=[]): + """uniform(minimum, maximum, shape=[]) returns array of given shape of random reals + in given range""" + if shape == []: + shape = None + return mt.uniform(minimum, maximum, shape) + +def randint(minimum, maximum=None, shape=[]): + """randint(min, max, shape=[]) = random integers >=min, < max + If max not given, random integers >= 0, = 0.6: + raise SystemExit, "uniform returned out of desired range" + print "randint(1, 10, shape=[50])" + print randint(1, 10, shape=[50]) + print "permutation(10)", permutation(10) + print "randint(3,9)", randint(3,9) + print "random_integers(10, shape=[20])" + print random_integers(10, shape=[20]) + s = 3.0 + x = normal(2.0, s, [10, 1000]) + if len(x.shape) != 2 or x.shape[0] != 10 or x.shape[1] != 1000: + raise SystemExit, "standard_normal returned wrong shape" + x.shape = (10000,) + mean_var_test(x, "normally distributed numbers with mean 2 and variance %f"%(s**2,), 2, s**2, 0) + x = exponential(3, 10000) + mean_var_test(x, "random numbers exponentially distributed with mean %f"%(s,), s, s**2, 2) + x = multivariate_normal(Numeric.array([10,20]), Numeric.array(([1,2],[2,4]))) + print "\nA multivariate normal", x + if x.shape != (2,): raise SystemExit, "multivariate_normal returned wrong shape" + x = multivariate_normal(Numeric.array([10,20]), Numeric.array([[1,2],[2,4]]), [4,3]) + print "A 4x3x2 array containing multivariate normals" + print x + if x.shape != (4,3,2): raise SystemExit, "multivariate_normal returned wrong shape" + x = multivariate_normal(Numeric.array([-100,0,100]), Numeric.array([[3,2,1],[2,2,1],[1,1,1]]), 10000) + x_mean = Numeric.sum(x)/10000. + print "Average of 10000 multivariate normals with mean [-100,0,100]" + print x_mean + x_minus_mean = x - x_mean + print "Estimated covariance of 10000 multivariate normals with covariance [[3,2,1],[2,2,1],[1,1,1]]" + print Numeric.dot(Numeric.transpose(x_minus_mean),x_minus_mean)/9999. + x = beta(5.0, 10.0, 10000) + mean_var_test(x, "beta(5.,10.) random numbers", 0.333, 0.014) + x = gamma(.01, 2., 10000) + mean_var_test(x, "gamma(.01,2.) random numbers", 2*100, 2*100*100) + x = chi_square(11., 10000) + mean_var_test(x, "chi squared random numbers with 11 degrees of freedom", 11, 22, 2*Numeric.sqrt(2./11.)) + x = F(5., 10., 10000) + mean_var_test(x, "F random numbers with 5 and 10 degrees of freedom", 1.25, 1.35) + x = poisson(50., 10000) + mean_var_test(x, "poisson random numbers with mean 50", 50, 50, 0.14) + print "\nEach element is the result of 16 binomial trials with probability 0.5:" + print binomial(16, 0.5, 16) + print "\nEach element is the result of 16 negative binomial trials with probability 0.5:" + print negative_binomial(16, 0.5, [16,]) + print "\nEach row is the result of 16 multinomial trials with probabilities [0.1, 0.5, 0.1 0.3]:" + x = multinomial(16, [0.1, 0.5, 0.1], 8) + print x + print "Mean = ", Numeric.sum(x)/8. + +if __name__ == '__main__': + test() + + -- cgit v1.2.1