1#! /usr/bin/env python
2
3from __future__ import print_function
4from openturns import *
5
6TESTPREAMBLE()
7
8try:
9    # Test the initialization method
10    RandomGenerator.SetSeed(0)
11
12    # Test the state accessor for reading
13    initialState = RandomGenerator.GetState()
14    print("initialState=", repr(initialState))
15    # Test the generation of one realization
16    realization = RandomGenerator.Generate()
17    print("one realization=%.6f" % realization)
18    state = RandomGenerator.GetState()
19    print("state=", repr(state))
20    print("new state index=", state.getIndex())
21
22    # Test the generation of several realizations
23    size = 10000
24    several = RandomGenerator.Generate(size)
25    print(size, " realizations, first=%.6f" %
26          several[0], ", last=%.6f" % several[size - 1])
27
28    # Test the state accessor for writing
29    RandomGenerator.SetState(initialState)
30    print("restoring initial state, one realization=%.6f" %
31          RandomGenerator.Generate())
32    # Test the uniformity of the random generator
33    size = 100000
34    manyPoints = RandomGenerator.Generate(size)
35    slice = 10
36    frequencies = Point(slice, 0.0)
37    mean = 0.0
38    for i in range(size):
39        frequencies[int(slice * manyPoints[i])] = frequencies[
40            int(slice * manyPoints[i])] + 1
41        mean = mean + manyPoints[i]
42
43    mean = mean / size
44    print("mean of", size, "realizations= %.12f" % mean)
45    for i in range(slice):
46        frequencies[i] = frequencies[i] / size
47        print("frequency in slice [", (
48            1.0 * i) / slice, ",", (i + 1.0) / slice, "]=", frequencies[i])
49
50    print("One integer generation in [[0, ", slice - 1, "]]=",
51          RandomGenerator.IntegerGenerate(slice))
52    print("Another integer generation in [[0, ", slice - 1, "]]=",
53          RandomGenerator.IntegerGenerate(slice))
54    manyUnsignedInteger = RandomGenerator.IntegerGenerate(size, slice)
55    frequencies = Point(slice, 0.0)
56    mean = 0.0
57    for i in range(size):
58        frequencies[manyUnsignedInteger[i]] = frequencies[
59            manyUnsignedInteger[i]] + 1
60        mean = mean + manyUnsignedInteger[i]
61
62    mean = mean / size
63    print("mean of ", size, " integer realizations=", mean)
64    for i in range(slice):
65        frequencies[i] = frequencies[i] / size
66        print("frequency for value ", i, "=", frequencies[i])
67
68except:
69    import sys
70    print("t_RandomGenerator.py", sys.exc_info()[0], sys.exc_info()[1])
71