1 /* Program to test the random number streams file: RngStream.c */
2
3 #include <stdio.h>
4 #include "RngStream.h"
5
6 #define NS 1000000
7
main(void)8 int main (void)
9 {
10 double x;
11 int i, k;
12 RngStream g1, g2, g3;
13 RngStream gar[NS];
14
15 /* Create 3 parallel streams */
16 g1 = RngStream_CreateStream ("Poisson");
17 g2 = RngStream_CreateStream ("Cantor");
18 g3 = RngStream_CreateStream ("Laplace");
19
20 /* Generate 35 random integers in [5, 10] with stream g1 */
21 for (i = 0; i < 35; i++)
22 k = RngStream_RandInt (g1, 5, 10);
23
24 /* Generate 100 random reals in (0, 1) with stream g3 */
25 for (i = 0; i < 100; i++)
26 x = RngStream_RandU01 (g3);
27
28 /* Restart stream g3 in its initial state and generate the same 100
29 random reals as above */
30 RngStream_ResetStartStream (g3);
31 for (i = 0; i < 100; i++)
32 x = RngStream_RandU01 (g3);
33
34 /* Send stream g3 to its next substream and generate 5
35 random reals in (0, 1) with double precision */
36 RngStream_ResetNextSubstream (g3);
37 RngStream_IncreasedPrecis (g3, 1);
38 for (i = 0; i < 5; i++)
39 x = RngStream_RandU01 (g3);
40
41 /* Generate 100000 antithetic random reals in (0, 1) with stream g2 */
42 RngStream_SetAntithetic (g2, 1);
43 for (i = 0; i < 100000; i++)
44 x = RngStream_RandU01 (g2);
45
46 /* Delete the 3 streams */
47 RngStream_DeleteStream (&g3);
48 RngStream_DeleteStream (&g2);
49 RngStream_DeleteStream (&g1);
50
51 /* Create NS = 1000000 parallel streams */
52 for (i = 0; i < NS; i++)
53 gar[i] = RngStream_CreateStream ("");
54
55 /* Generate 1000 random real in (0, 1) with stream 55555 in gar */
56 for (i = 0; i < 1000; i++)
57 x = RngStream_RandU01 (gar[55554]);
58
59 for (i = 0; i < NS; i++)
60 RngStream_DeleteStream (&gar[i]);
61
62 return 0;
63 }
64