PRNG Analysis

ocaml


1: 0.000999
2: 0.001038
3: 0.001010
4: 0.000989
5: 0.000981
6: 0.000978
7: 0.000953
8: 0.000969
9: 0.001015
10: 0.001002
11: 0.001007
12: 0.001054
13: 0.001015
14: 0.001026
15: 0.000996
16: 0.001002
17: 0.000993
18: 0.000989
19: 0.001000
20: 0.001017
21: 0.001010
22: 0.000952
23: 0.000979
24: 0.000982
25: 0.001008
26: 0.000977
27: 0.000984
28: 0.000993
29: 0.001002
30: 0.001026
31: 0.000922
32: 0.001043
33: 0.000977
34: 0.000973
35: 0.000975
36: 0.001004
37: 0.001030
38: 0.001001
39: 0.001003
40: 0.001012
41: 0.001036
42: 0.001004
43: 0.000975
44: 0.000963
45: 0.001039
46: 0.000982
47: 0.000956
48: 0.001022
49: 0.001039
50: 0.001025
51: 0.000957
52: 0.000975
53: 0.001024
54: 0.000992
55: 0.000983
56: 0.001009
57: 0.001033
58: 0.001023
59: 0.001006
60: 0.000967
61: 0.000972
62: 0.000965
63: 0.000964
64: 0.001023
65: 0.001039
66: 0.001023
67: 0.000974
68: 0.001002
69: 0.001035
70: 0.001075
71: 0.000946
72: 0.000993
73: 0.000982
74: 0.000989
75: 0.001030
76: 0.001041
77: 0.001013
78: 0.001020
79: 0.000970
80: 0.001002
81: 0.000968
82: 0.001010
83: 0.001044
84: 0.001032
85: 0.001003
86: 0.001022
87: 0.000998
88: 0.000983
89: 0.001058
90: 0.000998
91: 0.000998
92: 0.001005
93: 0.000990
94: 0.001006
95: 0.000970
96: 0.000933
97: 0.001019
98: 0.001017
99: 0.000998
100: 0.000964
101: 0.001019
102: 0.000978
103: 0.000995
104: 0.000980
105: 0.001003
106: 0.001065
107: 0.000951
108: 0.000990
109: 0.001024
110: 0.000976
111: 0.001005
112: 0.001035
113: 0.001024
114: 0.001001
115: 0.001072
116: 0.000994
117: 0.000988
118: 0.000992
119: 0.001024
120: 0.001013
121: 0.000974
122: 0.000933
123: 0.000929
124: 0.001015
125: 0.001045
126: 0.001040
127: 0.000934
128: 0.000977
129: 0.000979
130: 0.001016
131: 0.001021
132: 0.001036
133: 0.000978
134: 0.000954
135: 0.000984
136: 0.001019
137: 0.001006
138: 0.001015
139: 0.000960
140: 0.000985
141: 0.001040
142: 0.001034
143: 0.000984
144: 0.001036
145: 0.000996
146: 0.000968
147: 0.001005
148: 0.001001
149: 0.000979
150: 0.000972
151: 0.000948
152: 0.000949
153: 0.000985
154: 0.000960
155: 0.001035
156: 0.001031
157: 0.000934
158: 0.000964
159: 0.001007
160: 0.001023
161: 0.001014
162: 0.001078
163: 0.000987
164: 0.000969
165: 0.001033
166: 0.000984
167: 0.000957
168: 0.001005
169: 0.001015
170: 0.001024
171: 0.001037
172: 0.000966
173: 0.001031
174: 0.000985
175: 0.001012
176: 0.000986
177: 0.000999
178: 0.001017
179: 0.001034
180: 0.000998
181: 0.001077
182: 0.001041
183: 0.000976
184: 0.001051
185: 0.000985
186: 0.001041
187: 0.000999
188: 0.000960
189: 0.001044
190: 0.000996
191: 0.000953
192: 0.001010
193: 0.000990
194: 0.001023
195: 0.000987
196: 0.001017
197: 0.001020
198: 0.001000
199: 0.001002
200: 0.001013
201: 0.001003
202: 0.001022
203: 0.000977
204: 0.000998
205: 0.001002
206: 0.001011
207: 0.001020
208: 0.000984
209: 0.001048
210: 0.001046
211: 0.000981
212: 0.000973
213: 0.000969
214: 0.000977
215: 0.001025
216: 0.000994
217: 0.000976
218: 0.001061
219: 0.001040
220: 0.000992
221: 0.000958
222: 0.001041
223: 0.001013
224: 0.001001
225: 0.000966
226: 0.000971
227: 0.001018
228: 0.000999
229: 0.000984
230: 0.001007
231: 0.001015
232: 0.000971
233: 0.001000
234: 0.001028
235: 0.001001
236: 0.001011
237: 0.000971
238: 0.000977
239: 0.001004
240: 0.001010
241: 0.001002
242: 0.000980
243: 0.001066
244: 0.001015
245: 0.000999
246: 0.001002
247: 0.001079
248: 0.001013
249: 0.001049
250: 0.000958
251: 0.001028
252: 0.001041
253: 0.000982
254: 0.000939
255: 0.000985
256: 0.000979
257: 0.000976
258: 0.001037
259: 0.000959
260: 0.001035
261: 0.001026
262: 0.000968
263: 0.000962
264: 0.000957
265: 0.000954
266: 0.001069
267: 0.001020
268: 0.001001
269: 0.000981
270: 0.000986
271: 0.000972
272: 0.000977
273: 0.000986
274: 0.000971
275: 0.000982
276: 0.000976
277: 0.000962
278: 0.001031
279: 0.001036
280: 0.000991
281: 0.000986
282: 0.000997
283: 0.001093
284: 0.000995
285: 0.000951
286: 0.000972
287: 0.001027
288: 0.001031
289: 0.001038
290: 0.000988
291: 0.000996
292: 0.000994
293: 0.000951
294: 0.000964
295: 0.001019
296: 0.000981
297: 0.001016
298: 0.000970
299: 0.000976
300: 0.000951
301: 0.001021
302: 0.001021
303: 0.000981
304: 0.001012
305: 0.000946
306: 0.000966
307: 0.000989
308: 0.000995
309: 0.001002
310: 0.001011
311: 0.001026
312: 0.001011
313: 0.000957
314: 0.001032
315: 0.000959
316: 0.001036
317: 0.000996
318: 0.001013
319: 0.001013
320: 0.001060
321: 0.001022
322: 0.000942
323: 0.001002
324: 0.001056
325: 0.001006
326: 0.001007
327: 0.001029
328: 0.000950
329: 0.001030
330: 0.001052
331: 0.001012
332: 0.001043
333: 0.001055
334: 0.001033
335: 0.001052
336: 0.000960
337: 0.001012
338: 0.000987
339: 0.000984
340: 0.001020
341: 0.001027
342: 0.000978
343: 0.001008
344: 0.000964
345: 0.000945
346: 0.000988
347: 0.000956
348: 0.001049
349: 0.000977
350: 0.000992
351: 0.000973
352: 0.001013
353: 0.001007
354: 0.001001
355: 0.000944
356: 0.001036
357: 0.000992
358: 0.001039
359: 0.001032
360: 0.001007
361: 0.000985
362: 0.001014
363: 0.001014
364: 0.001044
365: 0.000997
366: 0.001005
367: 0.000999
368: 0.001009
369: 0.001016
370: 0.001024
371: 0.000975
372: 0.000944
373: 0.000985
374: 0.000995
375: 0.001010
376: 0.001019
377: 0.001092
378: 0.000982
379: 0.000999
380: 0.001033
381: 0.000905
382: 0.001030
383: 0.001014
384: 0.000987
385: 0.000967
386: 0.001025
387: 0.000987
388: 0.001044
389: 0.000963
390: 0.000994
391: 0.000960
392: 0.000966
393: 0.001019
394: 0.001043
395: 0.001000
396: 0.001017
397: 0.000980
398: 0.001055
399: 0.000985
400: 0.001040
401: 0.000949
402: 0.000957
403: 0.001031
404: 0.000987
405: 0.001026
406: 0.000946
407: 0.001015
408: 0.001009
409: 0.001020
410: 0.001022
411: 0.001012
412: 0.000923
413: 0.000977
414: 0.000966
415: 0.001040
416: 0.000975
417: 0.001056
418: 0.001037
419: 0.000945
420: 0.001011
421: 0.000992
422: 0.001007
423: 0.000986
424: 0.001065
425: 0.000995
426: 0.001017
427: 0.001021
428: 0.001028
429: 0.000954
430: 0.001012
431: 0.000986
432: 0.001010
433: 0.001021
434: 0.000966
435: 0.000920
436: 0.000982
437: 0.001010
438: 0.001040
439: 0.001017
440: 0.000982
441: 0.000968
442: 0.001058
443: 0.000997
444: 0.001007
445: 0.001028
446: 0.000991
447: 0.000941
448: 0.001014
449: 0.000991
450: 0.001052
451: 0.001005
452: 0.000987
453: 0.001013
454: 0.000965
455: 0.000963
456: 0.000973
457: 0.001038
458: 0.001019
459: 0.001005
460: 0.001014
461: 0.001016
462: 0.001003
463: 0.001013
464: 0.000992
465: 0.001017
466: 0.001017
467: 0.001049
468: 0.000918
469: 0.000985
470: 0.001064
471: 0.001041
472: 0.000999
473: 0.000996
474: 0.001005
475: 0.001006
476: 0.001007
477: 0.000995
478: 0.001036
479: 0.001000
480: 0.000991
481: 0.000968
482: 0.000963
483: 0.001030
484: 0.001013
485: 0.001007
486: 0.000984
487: 0.000984
488: 0.000976
489: 0.000984
490: 0.001001
491: 0.001019
492: 0.001022
493: 0.001051
494: 0.000984
495: 0.000999
496: 0.000973
497: 0.001008
498: 0.000967
499: 0.001010
500: 0.001017
501: 0.001022
502: 0.001062
503: 0.000995
504: 0.000938
505: 0.000989
506: 0.000961
507: 0.000942
508: 0.000994
509: 0.001006
510: 0.001028
511: 0.000951
512: 0.001003
513: 0.000969
514: 0.000998
515: 0.001041
516: 0.001045
517: 0.001019
518: 0.001005
519: 0.000962
520: 0.001006
521: 0.001016
522: 0.001010
523: 0.000976
524: 0.001029
525: 0.001025
526: 0.000975
527: 0.001047
528: 0.000986
529: 0.001066
530: 0.001018
531: 0.001001
532: 0.000996
533: 0.000990
534: 0.001012
535: 0.001007
536: 0.001038
537: 0.001059
538: 0.001021
539: 0.000994
540: 0.001038
541: 0.001023
542: 0.001045
543: 0.000986
544: 0.001004
545: 0.001050
546: 0.001001
547: 0.001022
548: 0.001003
549: 0.001014
550: 0.000982
551: 0.001003
552: 0.001054
553: 0.000996
554: 0.001030
555: 0.000993
556: 0.000997
557: 0.001029
558: 0.000914
559: 0.000984
560: 0.000963
561: 0.001057
562: 0.000964
563: 0.000981
564: 0.001048
565: 0.000992
566: 0.000954
567: 0.001015
568: 0.000962
569: 0.000994
570: 0.001002
571: 0.001007
572: 0.000998
573: 0.001041
574: 0.000980
575: 0.001036
576: 0.000989
577: 0.001002
578: 0.000969
579: 0.001033
580: 0.001018
581: 0.000998
582: 0.000983
583: 0.001009
584: 0.001019
585: 0.001003
586: 0.001015
587: 0.001004
588: 0.000983
589: 0.000996
590: 0.000927
591: 0.000999
592: 0.001027
593: 0.001029
594: 0.001017
595: 0.001017
596: 0.001005
597: 0.001073
598: 0.000952
599: 0.000997
600: 0.000973
601: 0.000986
602: 0.000994
603: 0.000992
604: 0.000991
605: 0.001000
606: 0.000996
607: 0.001063
608: 0.000980
609: 0.000977
610: 0.000984
611: 0.001017
612: 0.000954
613: 0.000984
614: 0.000950
615: 0.000973
616: 0.000989
617: 0.000951
618: 0.000994
619: 0.001001
620: 0.000964
621: 0.001012
622: 0.000992
623: 0.000992
624: 0.001015
625: 0.001012
626: 0.000988
627: 0.000989
628: 0.001025
629: 0.000934
630: 0.000976
631: 0.001032
632: 0.001011
633: 0.000986
634: 0.001019
635: 0.000989
636: 0.001012
637: 0.000960
638: 0.001004
639: 0.001003
640: 0.000987
641: 0.000994
642: 0.001016
643: 0.001032
644: 0.000991
645: 0.001061
646: 0.000975
647: 0.001019
648: 0.000999
649: 0.001045
650: 0.001090
651: 0.000987
652: 0.000982
653: 0.001063
654: 0.001066
655: 0.000965
656: 0.001026
657: 0.000988
658: 0.001038
659: 0.001026
660: 0.000984
661: 0.000951
662: 0.001013
663: 0.000962
664: 0.001034
665: 0.000975
666: 0.000992
667: 0.001025
668: 0.000969
669: 0.000974
670: 0.001041
671: 0.000981
672: 0.000987
673: 0.001029
674: 0.000999
675: 0.000992
676: 0.001005
677: 0.000965
678: 0.001035
679: 0.000974
680: 0.000999
681: 0.001001
682: 0.001032
683: 0.001014
684: 0.000978
685: 0.001034
686: 0.001001
687: 0.001022
688: 0.001046
689: 0.001017
690: 0.001002
691: 0.000938
692: 0.000969
693: 0.001029
694: 0.001003
695: 0.001014
696: 0.000997
697: 0.001019
698: 0.000988
699: 0.000942
700: 0.001003
701: 0.001015
702: 0.000981
703: 0.000990
704: 0.000997
705: 0.001072
706: 0.000972
707: 0.000979
708: 0.001020
709: 0.000970
710: 0.001009
711: 0.001012
712: 0.001019
713: 0.001003
714: 0.000994
715: 0.001030
716: 0.001071
717: 0.001000
718: 0.000991
719: 0.001034
720: 0.000991
721: 0.000986
722: 0.000987
723: 0.000957
724: 0.000985
725: 0.000970
726: 0.001025
727: 0.001038
728: 0.000962
729: 0.000932
730: 0.001001
731: 0.000997
732: 0.001018
733: 0.001030
734: 0.000965
735: 0.000957
736: 0.000970
737: 0.001008
738: 0.001030
739: 0.000998
740: 0.001021
741: 0.000985
742: 0.000976
743: 0.000968
744: 0.001054
745: 0.001040
746: 0.000982
747: 0.001050
748: 0.001024
749: 0.001054
750: 0.000999
751: 0.001025
752: 0.000965
753: 0.000978
754: 0.001020
755: 0.001032
756: 0.000997
757: 0.000957
758: 0.001036
759: 0.001030
760: 0.000982
761: 0.001087
762: 0.001009
763: 0.000977
764: 0.000975
765: 0.000980
766: 0.000970
767: 0.000975
768: 0.000954
769: 0.000977
770: 0.001001
771: 0.000958
772: 0.000997
773: 0.001012
774: 0.000963
775: 0.000968
776: 0.000983
777: 0.001000
778: 0.001056
779: 0.000910
780: 0.000998
781: 0.001005
782: 0.000982
783: 0.000976
784: 0.000987
785: 0.001004
786: 0.000987
787: 0.001000
788: 0.000985
789: 0.000998
790: 0.000991
791: 0.001015
792: 0.000993
793: 0.001018
794: 0.000982
795: 0.001072
796: 0.000965
797: 0.001029
798: 0.001036
799: 0.000990
800: 0.000981
801: 0.000991
802: 0.001042
803: 0.000969
804: 0.000970
805: 0.001015
806: 0.000948
807: 0.001063
808: 0.001029
809: 0.000955
810: 0.001012
811: 0.001017
812: 0.000979
813: 0.000995
814: 0.000995
815: 0.000993
816: 0.001036
817: 0.001048
818: 0.001006
819: 0.000975
820: 0.000930
821: 0.001000
822: 0.000984
823: 0.000993
824: 0.001003
825: 0.000954
826: 0.000997
827: 0.001085
828: 0.000991
829: 0.001035
830: 0.000960
831: 0.000975
832: 0.000988
833: 0.000997
834: 0.000960
835: 0.000976
836: 0.000959
837: 0.000927
838: 0.000984
839: 0.000990
840: 0.000961
841: 0.001003
842: 0.000983
843: 0.000907
844: 0.000957
845: 0.001044
846: 0.000978
847: 0.000972
848: 0.001009
849: 0.000996
850: 0.000978
851: 0.000969
852: 0.000982
853: 0.001001
854: 0.001012
855: 0.001024
856: 0.001003
857: 0.001006
858: 0.001020
859: 0.001001
860: 0.000969
861: 0.001058
862: 0.001025
863: 0.000953
864: 0.000947
865: 0.000943
866: 0.000982
867: 0.001010
868: 0.001012
869: 0.001093
870: 0.000958
871: 0.001010
872: 0.001023
873: 0.001027
874: 0.001026
875: 0.000984
876: 0.000970
877: 0.000993
878: 0.001013
879: 0.000998
880: 0.000961
881: 0.001004
882: 0.001035
883: 0.001009
884: 0.000990
885: 0.000958
886: 0.001014
887: 0.000992
888: 0.000980
889: 0.000974
890: 0.001025
891: 0.001060
892: 0.001019
893: 0.001043
894: 0.000990
895: 0.000973
896: 0.001015
897: 0.001000
898: 0.000967
899: 0.001008
900: 0.000981
901: 0.000923
902: 0.001023
903: 0.000986
904: 0.000990
905: 0.000942
906: 0.001064
907: 0.000998
908: 0.000947
909: 0.000983
910: 0.001034
911: 0.000962
912: 0.001010
913: 0.001043
914: 0.001034
915: 0.000994
916: 0.000994
917: 0.001008
918: 0.001011
919: 0.001007
920: 0.000993
921: 0.001006
922: 0.000975
923: 0.000981
924: 0.001032
925: 0.001036
926: 0.000935
927: 0.001000
928: 0.000996
929: 0.001012
930: 0.000991
931: 0.001002
932: 0.001002
933: 0.000995
934: 0.000982
935: 0.001004
936: 0.001035
937: 0.001046
938: 0.000967
939: 0.001012
940: 0.001061
941: 0.001048
942: 0.001009
943: 0.001058
944: 0.001021
945: 0.000963
946: 0.000980
947: 0.000994
948: 0.000984
949: 0.001013
950: 0.001000
951: 0.000984
952: 0.000976
953: 0.000953
954: 0.000996
955: 0.000973
956: 0.000993
957: 0.000981
958: 0.001005
959: 0.000994
960: 0.001053
961: 0.001044
962: 0.000997
963: 0.000984
964: 0.000997
965: 0.000976
966: 0.001011
967: 0.001022
968: 0.000997
969: 0.000958
970: 0.001007
971: 0.001013
972: 0.000973
973: 0.000990
974: 0.001028
975: 0.000982
976: 0.001056
977: 0.001035
978: 0.001030
979: 0.000967
980: 0.000980
981: 0.000987
982: 0.000983
983: 0.001038
984: 0.001039
985: 0.001010
986: 0.000999
987: 0.001004
988: 0.000957
989: 0.000998
990: 0.000934
991: 0.001011
992: 0.000974
993: 0.001007
994: 0.000985
995: 0.000978
996: 0.000988
997: 0.001035
998: 0.000985
999: 0.000967
1000: 0.000948

1: 0.099635
2: 0.100017
3: 0.100539
4: 0.100303
5: 0.100392
6: 0.099974
7: 0.100020
8: 0.099026
9: 0.100354
10: 0.099740
1: 0.099991
2: 0.099995
3: 0.099999
4: 0.099991
5: 0.100001
6: 0.100005
7: 0.100011
8: 0.100001
9: 0.100017
10: 0.099989

let generate_random_numbers n x =
  let numbers = Array.make (x+1) 0 in
  for i=1 to n do
    let r = Random.int x + 1 in
    numbers.(r) <- numbers.(r) + 1
  done;
  numbers

let calculate_probabilities numbers n =
  let probabilities = Array.make (Array.length numbers) 0.0 in
  for i=1 to (Array.length numbers - 1) do
    probabilities.(i) <- float_of_int numbers.(i) /. float_of_int n
  done;
  probabilities

let write_probabilities_to_file probabilities n x =
  let filename = Printf.sprintf "ocaml_%d_%d" x n in
  let oc = open_out filename in
  for i=1 to (Array.length probabilities - 1) do
    Printf.fprintf oc "%d: %.6f\n" i probabilities.(i)
  done;
  close_out oc;
  Printf.printf "Probabilities written to file %s.\n" filename

let () =
  let n = 1000000000 in
  let x = 10 in
  Random.self_init ();
  let numbers = generate_random_numbers n x in
  let probabilities = calculate_probabilities numbers n in
  write_probabilities_to_file probabilities n x