diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 2012-03-14 16:12:09 +0000 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 2012-03-14 16:12:09 +0000 |
commit | 44b6164bb05324af5968c156f7fac342b0c53a2a (patch) | |
tree | 9bc68dd6bd74ce4d29d900b8925a306798187576 /stdlib | |
parent | f95e7f4a59d96af3241a6e6909be59b3781d467e (diff) |
Improve self-initialization of the Random module, using /dev/urandom
when available. The changes in byterun/win32.c are untested.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@12244 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'stdlib')
-rw-r--r-- | stdlib/.depend | 484 | ||||
-rw-r--r-- | stdlib/random.ml | 8 |
2 files changed, 252 insertions, 240 deletions
diff --git a/stdlib/.depend b/stdlib/.depend index 52ea959d4..3fd2959bc 100644 --- a/stdlib/.depend +++ b/stdlib/.depend @@ -1,248 +1,260 @@ -arg.cmi: -array.cmi: -arrayLabels.cmi: -buffer.cmi: -callback.cmi: -camlinternalLazy.cmi: -camlinternalMod.cmi: obj.cmi -camlinternalOO.cmi: obj.cmi -char.cmi: -complex.cmi: -digest.cmi: -filename.cmi: -format.cmi: pervasives.cmi buffer.cmi -gc.cmi: -genlex.cmi: stream.cmi -hashtbl.cmi: -int32.cmi: -int64.cmi: -lazy.cmi: -lexing.cmi: -list.cmi: -listLabels.cmi: -map.cmi: -marshal.cmi: -moreLabels.cmi: set.cmi map.cmi hashtbl.cmi -nativeint.cmi: -obj.cmi: int32.cmi -oo.cmi: camlinternalOO.cmi -parsing.cmi: obj.cmi lexing.cmi -pervasives.cmi: -printexc.cmi: -printf.cmi: obj.cmi buffer.cmi -queue.cmi: -random.cmi: nativeint.cmi int64.cmi int32.cmi -scanf.cmi: pervasives.cmi -set.cmi: -sort.cmi: -stack.cmi: -stdLabels.cmi: -stream.cmi: -string.cmi: -stringLabels.cmi: -sys.cmi: -weak.cmi: hashtbl.cmi -arg.cmo: sys.cmi string.cmi printf.cmi list.cmi buffer.cmi array.cmi arg.cmi -arg.cmx: sys.cmx string.cmx printf.cmx list.cmx buffer.cmx array.cmx arg.cmi -array.cmo: array.cmi -array.cmx: array.cmi -arrayLabels.cmo: array.cmi arrayLabels.cmi -arrayLabels.cmx: array.cmx arrayLabels.cmi -buffer.cmo: sys.cmi string.cmi buffer.cmi -buffer.cmx: sys.cmx string.cmx buffer.cmi -callback.cmo: obj.cmi callback.cmi -callback.cmx: obj.cmx callback.cmi -camlinternalLazy.cmo: obj.cmi camlinternalLazy.cmi -camlinternalLazy.cmx: obj.cmx camlinternalLazy.cmi -camlinternalMod.cmo: obj.cmi camlinternalOO.cmi array.cmi camlinternalMod.cmi -camlinternalMod.cmx: obj.cmx camlinternalOO.cmx array.cmx camlinternalMod.cmi -camlinternalOO.cmo: sys.cmi string.cmi obj.cmi map.cmi list.cmi char.cmi \ - array.cmi camlinternalOO.cmi -camlinternalOO.cmx: sys.cmx string.cmx obj.cmx map.cmx list.cmx char.cmx \ - array.cmx camlinternalOO.cmi -char.cmo: char.cmi -char.cmx: char.cmi -complex.cmo: complex.cmi -complex.cmx: complex.cmi -digest.cmo: string.cmi printf.cmi digest.cmi -digest.cmx: string.cmx printf.cmx digest.cmi -filename.cmo: sys.cmi string.cmi random.cmi printf.cmi buffer.cmi \ +arg.cmi : +array.cmi : +arrayLabels.cmi : +buffer.cmi : +callback.cmi : +camlinternalLazy.cmi : +camlinternalMod.cmi : obj.cmi +camlinternalOO.cmi : obj.cmi +char.cmi : +complex.cmi : +digest.cmi : +filename.cmi : +format.cmi : pervasives.cmi buffer.cmi +gc.cmi : +genlex.cmi : stream.cmi +hashtbl.cmi : +int32.cmi : +int64.cmi : +lazy.cmi : +lexing.cmi : +list.cmi : +listLabels.cmi : +map.cmi : +marshal.cmi : +moreLabels.cmi : set.cmi map.cmi hashtbl.cmi +nativeint.cmi : +obj.cmi : int32.cmi +oo.cmi : camlinternalOO.cmi +parsing.cmi : obj.cmi lexing.cmi +pervasives.cmi : +printexc.cmi : +printf.cmi : obj.cmi buffer.cmi +queue.cmi : +random.cmi : nativeint.cmi int64.cmi int32.cmi +scanf.cmi : pervasives.cmi +set.cmi : +sort.cmi : +stack.cmi : +stdLabels.cmi : +stream.cmi : +string.cmi : +stringLabels.cmi : +sys.cmi : +weak.cmi : hashtbl.cmi +arg.cmo : sys.cmi string.cmi printf.cmi list.cmi buffer.cmi array.cmi \ + arg.cmi +arg.cmx : sys.cmx string.cmx printf.cmx list.cmx buffer.cmx array.cmx \ + arg.cmi +array.cmo : array.cmi +array.cmx : array.cmi +arrayLabels.cmo : array.cmi arrayLabels.cmi +arrayLabels.cmx : array.cmx arrayLabels.cmi +buffer.cmo : sys.cmi string.cmi buffer.cmi +buffer.cmx : sys.cmx string.cmx buffer.cmi +callback.cmo : obj.cmi callback.cmi +callback.cmx : obj.cmx callback.cmi +camlinternalLazy.cmo : obj.cmi camlinternalLazy.cmi +camlinternalLazy.cmx : obj.cmx camlinternalLazy.cmi +camlinternalMod.cmo : obj.cmi camlinternalOO.cmi array.cmi \ + camlinternalMod.cmi +camlinternalMod.cmx : obj.cmx camlinternalOO.cmx array.cmx \ + camlinternalMod.cmi +camlinternalOO.cmo : sys.cmi string.cmi obj.cmi map.cmi list.cmi char.cmi \ + callback.cmi array.cmi camlinternalOO.cmi +camlinternalOO.cmx : sys.cmx string.cmx obj.cmx map.cmx list.cmx char.cmx \ + callback.cmx array.cmx camlinternalOO.cmi +char.cmo : char.cmi +char.cmx : char.cmi +complex.cmo : complex.cmi +complex.cmx : complex.cmi +digest.cmo : string.cmi printf.cmi char.cmi digest.cmi +digest.cmx : string.cmx printf.cmx char.cmx digest.cmi +filename.cmo : sys.cmi string.cmi random.cmi printf.cmi buffer.cmi \ filename.cmi -filename.cmx: sys.cmx string.cmx random.cmx printf.cmx buffer.cmx \ +filename.cmx : sys.cmx string.cmx random.cmx printf.cmx buffer.cmx \ filename.cmi -format.cmo: string.cmi printf.cmi pervasives.cmi obj.cmi list.cmi buffer.cmi \ - format.cmi -format.cmx: string.cmx printf.cmx pervasives.cmx obj.cmx list.cmx buffer.cmx \ - format.cmi -gc.cmo: sys.cmi printf.cmi gc.cmi -gc.cmx: sys.cmx printf.cmx gc.cmi -genlex.cmo: string.cmi stream.cmi list.cmi hashtbl.cmi char.cmi genlex.cmi -genlex.cmx: string.cmx stream.cmx list.cmx hashtbl.cmx char.cmx genlex.cmi -hashtbl.cmo: sys.cmi random.cmi obj.cmi array.cmi hashtbl.cmi -hashtbl.cmx: sys.cmx random.cmx obj.cmx array.cmx hashtbl.cmi -int32.cmo: pervasives.cmi int32.cmi -int32.cmx: pervasives.cmx int32.cmi -int64.cmo: pervasives.cmi int64.cmi -int64.cmx: pervasives.cmx int64.cmi -lazy.cmo: obj.cmi camlinternalLazy.cmi lazy.cmi -lazy.cmx: obj.cmx camlinternalLazy.cmx lazy.cmi -lexing.cmo: sys.cmi string.cmi array.cmi lexing.cmi -lexing.cmx: sys.cmx string.cmx array.cmx lexing.cmi -list.cmo: list.cmi -list.cmx: list.cmi -listLabels.cmo: list.cmi listLabels.cmi -listLabels.cmx: list.cmx listLabels.cmi -map.cmo: map.cmi -map.cmx: map.cmi -marshal.cmo: string.cmi marshal.cmi -marshal.cmx: string.cmx marshal.cmi -moreLabels.cmo: set.cmi map.cmi hashtbl.cmi moreLabels.cmi -moreLabels.cmx: set.cmx map.cmx hashtbl.cmx moreLabels.cmi -nativeint.cmo: sys.cmi pervasives.cmi nativeint.cmi -nativeint.cmx: sys.cmx pervasives.cmx nativeint.cmi -obj.cmo: marshal.cmi int32.cmi array.cmi obj.cmi -obj.cmx: marshal.cmx int32.cmx array.cmx obj.cmi -oo.cmo: camlinternalOO.cmi oo.cmi -oo.cmx: camlinternalOO.cmx oo.cmi -parsing.cmo: obj.cmi lexing.cmi array.cmi parsing.cmi -parsing.cmx: obj.cmx lexing.cmx array.cmx parsing.cmi -pervasives.cmo: pervasives.cmi -pervasives.cmx: pervasives.cmi -printexc.cmo: printf.cmi obj.cmi buffer.cmi array.cmi printexc.cmi -printexc.cmx: printf.cmx obj.cmx buffer.cmx array.cmx printexc.cmi -printf.cmo: string.cmi pervasives.cmi obj.cmi list.cmi char.cmi buffer.cmi \ +format.cmo : string.cmi printf.cmi pervasives.cmi obj.cmi list.cmi \ + buffer.cmi format.cmi +format.cmx : string.cmx printf.cmx pervasives.cmx obj.cmx list.cmx \ + buffer.cmx format.cmi +gc.cmo : sys.cmi printf.cmi gc.cmi +gc.cmx : sys.cmx printf.cmx gc.cmi +genlex.cmo : string.cmi stream.cmi list.cmi hashtbl.cmi char.cmi genlex.cmi +genlex.cmx : string.cmx stream.cmx list.cmx hashtbl.cmx char.cmx genlex.cmi +hashtbl.cmo : sys.cmi obj.cmi array.cmi hashtbl.cmi +hashtbl.cmx : sys.cmx obj.cmx array.cmx hashtbl.cmi +int32.cmo : pervasives.cmi int32.cmi +int32.cmx : pervasives.cmx int32.cmi +int64.cmo : pervasives.cmi int64.cmi +int64.cmx : pervasives.cmx int64.cmi +lazy.cmo : obj.cmi camlinternalLazy.cmi lazy.cmi +lazy.cmx : obj.cmx camlinternalLazy.cmx lazy.cmi +lexing.cmo : sys.cmi string.cmi array.cmi lexing.cmi +lexing.cmx : sys.cmx string.cmx array.cmx lexing.cmi +list.cmo : list.cmi +list.cmx : list.cmi +listLabels.cmo : list.cmi listLabels.cmi +listLabels.cmx : list.cmx listLabels.cmi +map.cmo : map.cmi +map.cmx : map.cmi +marshal.cmo : string.cmi marshal.cmi +marshal.cmx : string.cmx marshal.cmi +moreLabels.cmo : set.cmi map.cmi hashtbl.cmi moreLabels.cmi +moreLabels.cmx : set.cmx map.cmx hashtbl.cmx moreLabels.cmi +nativeint.cmo : sys.cmi pervasives.cmi nativeint.cmi +nativeint.cmx : sys.cmx pervasives.cmx nativeint.cmi +obj.cmo : marshal.cmi int32.cmi array.cmi obj.cmi +obj.cmx : marshal.cmx int32.cmx array.cmx obj.cmi +oo.cmo : camlinternalOO.cmi oo.cmi +oo.cmx : camlinternalOO.cmx oo.cmi +parsing.cmo : obj.cmi lexing.cmi array.cmi parsing.cmi +parsing.cmx : obj.cmx lexing.cmx array.cmx parsing.cmi +pervasives.cmo : pervasives.cmi +pervasives.cmx : pervasives.cmi +printexc.cmo : printf.cmi obj.cmi buffer.cmi array.cmi printexc.cmi +printexc.cmx : printf.cmx obj.cmx buffer.cmx array.cmx printexc.cmi +printf.cmo : string.cmi pervasives.cmi obj.cmi list.cmi char.cmi buffer.cmi \ array.cmi printf.cmi -printf.cmx: string.cmx pervasives.cmx obj.cmx list.cmx char.cmx buffer.cmx \ +printf.cmx : string.cmx pervasives.cmx obj.cmx list.cmx char.cmx buffer.cmx \ array.cmx printf.cmi -queue.cmo: obj.cmi queue.cmi -queue.cmx: obj.cmx queue.cmi -random.cmo: string.cmi pervasives.cmi nativeint.cmi int64.cmi int32.cmi \ +queue.cmo : obj.cmi queue.cmi +queue.cmx : obj.cmx queue.cmi +random.cmo : string.cmi pervasives.cmi nativeint.cmi int64.cmi int32.cmi \ digest.cmi char.cmi array.cmi random.cmi -random.cmx: string.cmx pervasives.cmx nativeint.cmx int64.cmx int32.cmx \ +random.cmx : string.cmx pervasives.cmx nativeint.cmx int64.cmx int32.cmx \ digest.cmx char.cmx array.cmx random.cmi -scanf.cmo: string.cmi printf.cmi pervasives.cmi obj.cmi list.cmi hashtbl.cmi \ - buffer.cmi array.cmi scanf.cmi -scanf.cmx: string.cmx printf.cmx pervasives.cmx obj.cmx list.cmx hashtbl.cmx \ - buffer.cmx array.cmx scanf.cmi -set.cmo: set.cmi -set.cmx: set.cmi -sort.cmo: array.cmi sort.cmi -sort.cmx: array.cmx sort.cmi -stack.cmo: list.cmi stack.cmi -stack.cmx: list.cmx stack.cmi -stdLabels.cmo: stringLabels.cmi listLabels.cmi arrayLabels.cmi stdLabels.cmi -stdLabels.cmx: stringLabels.cmx listLabels.cmx arrayLabels.cmx stdLabels.cmi -std_exit.cmo: -std_exit.cmx: -stream.cmo: string.cmi obj.cmi list.cmi lazy.cmi stream.cmi -stream.cmx: string.cmx obj.cmx list.cmx lazy.cmx stream.cmi -string.cmo: pervasives.cmi list.cmi char.cmi string.cmi -string.cmx: pervasives.cmx list.cmx char.cmx string.cmi -stringLabels.cmo: string.cmi stringLabels.cmi -stringLabels.cmx: string.cmx stringLabels.cmi -sys.cmo: sys.cmi -sys.cmx: sys.cmi -weak.cmo: sys.cmi obj.cmi hashtbl.cmi array.cmi weak.cmi -weak.cmx: sys.cmx obj.cmx hashtbl.cmx array.cmx weak.cmi -arg.cmo: sys.cmi string.cmi printf.cmi list.cmi buffer.cmi array.cmi arg.cmi -arg.p.cmx: sys.p.cmx string.p.cmx printf.p.cmx list.p.cmx buffer.p.cmx array.p.cmx arg.cmi -array.cmo: array.cmi -array.p.cmx: array.cmi -arrayLabels.cmo: array.cmi arrayLabels.cmi -arrayLabels.p.cmx: array.p.cmx arrayLabels.cmi -buffer.cmo: sys.cmi string.cmi buffer.cmi -buffer.p.cmx: sys.p.cmx string.p.cmx buffer.cmi -callback.cmo: obj.cmi callback.cmi -callback.p.cmx: obj.p.cmx callback.cmi -camlinternalLazy.cmo: obj.cmi camlinternalLazy.cmi -camlinternalLazy.p.cmx: obj.p.cmx camlinternalLazy.cmi -camlinternalMod.cmo: obj.cmi camlinternalOO.cmi array.cmi camlinternalMod.cmi -camlinternalMod.p.cmx: obj.p.cmx camlinternalOO.p.cmx array.p.cmx camlinternalMod.cmi -camlinternalOO.cmo: sys.cmi string.cmi obj.cmi map.cmi list.cmi char.cmi \ - array.cmi camlinternalOO.cmi -camlinternalOO.p.cmx: sys.p.cmx string.p.cmx obj.p.cmx map.p.cmx list.p.cmx char.p.cmx \ - array.p.cmx camlinternalOO.cmi -char.cmo: char.cmi -char.p.cmx: char.cmi -complex.cmo: complex.cmi -complex.p.cmx: complex.cmi -digest.cmo: string.cmi printf.cmi digest.cmi -digest.p.cmx: string.p.cmx printf.p.cmx digest.cmi -filename.cmo: sys.cmi string.cmi random.cmi printf.cmi buffer.cmi \ +scanf.cmo : string.cmi printf.cmi pervasives.cmi obj.cmi list.cmi \ + hashtbl.cmi buffer.cmi array.cmi scanf.cmi +scanf.cmx : string.cmx printf.cmx pervasives.cmx obj.cmx list.cmx \ + hashtbl.cmx buffer.cmx array.cmx scanf.cmi +set.cmo : set.cmi +set.cmx : set.cmi +sort.cmo : array.cmi sort.cmi +sort.cmx : array.cmx sort.cmi +stack.cmo : list.cmi stack.cmi +stack.cmx : list.cmx stack.cmi +stdLabels.cmo : stringLabels.cmi listLabels.cmi arrayLabels.cmi \ + stdLabels.cmi +stdLabels.cmx : stringLabels.cmx listLabels.cmx arrayLabels.cmx \ + stdLabels.cmi +std_exit.cmo : +std_exit.cmx : +stream.cmo : string.cmi obj.cmi list.cmi lazy.cmi stream.cmi +stream.cmx : string.cmx obj.cmx list.cmx lazy.cmx stream.cmi +string.cmo : pervasives.cmi list.cmi char.cmi string.cmi +string.cmx : pervasives.cmx list.cmx char.cmx string.cmi +stringLabels.cmo : string.cmi stringLabels.cmi +stringLabels.cmx : string.cmx stringLabels.cmi +sys.cmo : sys.cmi +sys.cmx : sys.cmi +weak.cmo : sys.cmi obj.cmi hashtbl.cmi array.cmi weak.cmi +weak.cmx : sys.cmx obj.cmx hashtbl.cmx array.cmx weak.cmi +arg.cmo : sys.cmi string.cmi printf.cmi list.cmi buffer.cmi array.cmi \ + arg.cmi +arg.p.cmx : sys.p.cmx string.p.cmx printf.p.cmx list.p.cmx buffer.p.cmx array.p.cmx \ + arg.cmi +array.cmo : array.cmi +array.p.cmx : array.cmi +arrayLabels.cmo : array.cmi arrayLabels.cmi +arrayLabels.p.cmx : array.p.cmx arrayLabels.cmi +buffer.cmo : sys.cmi string.cmi buffer.cmi +buffer.p.cmx : sys.p.cmx string.p.cmx buffer.cmi +callback.cmo : obj.cmi callback.cmi +callback.p.cmx : obj.p.cmx callback.cmi +camlinternalLazy.cmo : obj.cmi camlinternalLazy.cmi +camlinternalLazy.p.cmx : obj.p.cmx camlinternalLazy.cmi +camlinternalMod.cmo : obj.cmi camlinternalOO.cmi array.cmi \ + camlinternalMod.cmi +camlinternalMod.p.cmx : obj.p.cmx camlinternalOO.p.cmx array.p.cmx \ + camlinternalMod.cmi +camlinternalOO.cmo : sys.cmi string.cmi obj.cmi map.cmi list.cmi char.cmi \ + callback.cmi array.cmi camlinternalOO.cmi +camlinternalOO.p.cmx : sys.p.cmx string.p.cmx obj.p.cmx map.p.cmx list.p.cmx char.p.cmx \ + callback.p.cmx array.p.cmx camlinternalOO.cmi +char.cmo : char.cmi +char.p.cmx : char.cmi +complex.cmo : complex.cmi +complex.p.cmx : complex.cmi +digest.cmo : string.cmi printf.cmi char.cmi digest.cmi +digest.p.cmx : string.p.cmx printf.p.cmx char.p.cmx digest.cmi +filename.cmo : sys.cmi string.cmi random.cmi printf.cmi buffer.cmi \ filename.cmi -filename.p.cmx: sys.p.cmx string.p.cmx random.p.cmx printf.p.cmx buffer.p.cmx \ +filename.p.cmx : sys.p.cmx string.p.cmx random.p.cmx printf.p.cmx buffer.p.cmx \ filename.cmi -format.cmo: string.cmi printf.cmi pervasives.cmi obj.cmi list.cmi buffer.cmi \ - format.cmi -format.p.cmx: string.p.cmx printf.p.cmx pervasives.p.cmx obj.p.cmx list.p.cmx buffer.p.cmx \ - format.cmi -gc.cmo: sys.cmi printf.cmi gc.cmi -gc.p.cmx: sys.p.cmx printf.p.cmx gc.cmi -genlex.cmo: string.cmi stream.cmi list.cmi hashtbl.cmi char.cmi genlex.cmi -genlex.p.cmx: string.p.cmx stream.p.cmx list.p.cmx hashtbl.p.cmx char.p.cmx genlex.cmi -hashtbl.cmo: sys.cmi random.cmi obj.cmi array.cmi hashtbl.cmi -hashtbl.p.cmx: sys.p.cmx random.p.cmx obj.p.cmx array.p.cmx hashtbl.cmi -int32.cmo: pervasives.cmi int32.cmi -int32.p.cmx: pervasives.p.cmx int32.cmi -int64.cmo: pervasives.cmi int64.cmi -int64.p.cmx: pervasives.p.cmx int64.cmi -lazy.cmo: obj.cmi camlinternalLazy.cmi lazy.cmi -lazy.p.cmx: obj.p.cmx camlinternalLazy.p.cmx lazy.cmi -lexing.cmo: sys.cmi string.cmi array.cmi lexing.cmi -lexing.p.cmx: sys.p.cmx string.p.cmx array.p.cmx lexing.cmi -list.cmo: list.cmi -list.p.cmx: list.cmi -listLabels.cmo: list.cmi listLabels.cmi -listLabels.p.cmx: list.p.cmx listLabels.cmi -map.cmo: map.cmi -map.p.cmx: map.cmi -marshal.cmo: string.cmi marshal.cmi -marshal.p.cmx: string.p.cmx marshal.cmi -moreLabels.cmo: set.cmi map.cmi hashtbl.cmi moreLabels.cmi -moreLabels.p.cmx: set.p.cmx map.p.cmx hashtbl.p.cmx moreLabels.cmi -nativeint.cmo: sys.cmi pervasives.cmi nativeint.cmi -nativeint.p.cmx: sys.p.cmx pervasives.p.cmx nativeint.cmi -obj.cmo: marshal.cmi int32.cmi array.cmi obj.cmi -obj.p.cmx: marshal.p.cmx int32.p.cmx array.p.cmx obj.cmi -oo.cmo: camlinternalOO.cmi oo.cmi -oo.p.cmx: camlinternalOO.p.cmx oo.cmi -parsing.cmo: obj.cmi lexing.cmi array.cmi parsing.cmi -parsing.p.cmx: obj.p.cmx lexing.p.cmx array.p.cmx parsing.cmi -pervasives.cmo: pervasives.cmi -pervasives.p.cmx: pervasives.cmi -printexc.cmo: printf.cmi obj.cmi buffer.cmi array.cmi printexc.cmi -printexc.p.cmx: printf.p.cmx obj.p.cmx buffer.p.cmx array.p.cmx printexc.cmi -printf.cmo: string.cmi pervasives.cmi obj.cmi list.cmi char.cmi buffer.cmi \ +format.cmo : string.cmi printf.cmi pervasives.cmi obj.cmi list.cmi \ + buffer.cmi format.cmi +format.p.cmx : string.p.cmx printf.p.cmx pervasives.p.cmx obj.p.cmx list.p.cmx \ + buffer.p.cmx format.cmi +gc.cmo : sys.cmi printf.cmi gc.cmi +gc.p.cmx : sys.p.cmx printf.p.cmx gc.cmi +genlex.cmo : string.cmi stream.cmi list.cmi hashtbl.cmi char.cmi genlex.cmi +genlex.p.cmx : string.p.cmx stream.p.cmx list.p.cmx hashtbl.p.cmx char.p.cmx genlex.cmi +hashtbl.cmo : sys.cmi obj.cmi array.cmi hashtbl.cmi +hashtbl.p.cmx : sys.p.cmx obj.p.cmx array.p.cmx hashtbl.cmi +int32.cmo : pervasives.cmi int32.cmi +int32.p.cmx : pervasives.p.cmx int32.cmi +int64.cmo : pervasives.cmi int64.cmi +int64.p.cmx : pervasives.p.cmx int64.cmi +lazy.cmo : obj.cmi camlinternalLazy.cmi lazy.cmi +lazy.p.cmx : obj.p.cmx camlinternalLazy.p.cmx lazy.cmi +lexing.cmo : sys.cmi string.cmi array.cmi lexing.cmi +lexing.p.cmx : sys.p.cmx string.p.cmx array.p.cmx lexing.cmi +list.cmo : list.cmi +list.p.cmx : list.cmi +listLabels.cmo : list.cmi listLabels.cmi +listLabels.p.cmx : list.p.cmx listLabels.cmi +map.cmo : map.cmi +map.p.cmx : map.cmi +marshal.cmo : string.cmi marshal.cmi +marshal.p.cmx : string.p.cmx marshal.cmi +moreLabels.cmo : set.cmi map.cmi hashtbl.cmi moreLabels.cmi +moreLabels.p.cmx : set.p.cmx map.p.cmx hashtbl.p.cmx moreLabels.cmi +nativeint.cmo : sys.cmi pervasives.cmi nativeint.cmi +nativeint.p.cmx : sys.p.cmx pervasives.p.cmx nativeint.cmi +obj.cmo : marshal.cmi int32.cmi array.cmi obj.cmi +obj.p.cmx : marshal.p.cmx int32.p.cmx array.p.cmx obj.cmi +oo.cmo : camlinternalOO.cmi oo.cmi +oo.p.cmx : camlinternalOO.p.cmx oo.cmi +parsing.cmo : obj.cmi lexing.cmi array.cmi parsing.cmi +parsing.p.cmx : obj.p.cmx lexing.p.cmx array.p.cmx parsing.cmi +pervasives.cmo : pervasives.cmi +pervasives.p.cmx : pervasives.cmi +printexc.cmo : printf.cmi obj.cmi buffer.cmi array.cmi printexc.cmi +printexc.p.cmx : printf.p.cmx obj.p.cmx buffer.p.cmx array.p.cmx printexc.cmi +printf.cmo : string.cmi pervasives.cmi obj.cmi list.cmi char.cmi buffer.cmi \ array.cmi printf.cmi -printf.p.cmx: string.p.cmx pervasives.p.cmx obj.p.cmx list.p.cmx char.p.cmx buffer.p.cmx \ +printf.p.cmx : string.p.cmx pervasives.p.cmx obj.p.cmx list.p.cmx char.p.cmx buffer.p.cmx \ array.p.cmx printf.cmi -queue.cmo: obj.cmi queue.cmi -queue.p.cmx: obj.p.cmx queue.cmi -random.cmo: string.cmi pervasives.cmi nativeint.cmi int64.cmi int32.cmi \ +queue.cmo : obj.cmi queue.cmi +queue.p.cmx : obj.p.cmx queue.cmi +random.cmo : string.cmi pervasives.cmi nativeint.cmi int64.cmi int32.cmi \ digest.cmi char.cmi array.cmi random.cmi -random.p.cmx: string.p.cmx pervasives.p.cmx nativeint.p.cmx int64.p.cmx int32.p.cmx \ +random.p.cmx : string.p.cmx pervasives.p.cmx nativeint.p.cmx int64.p.cmx int32.p.cmx \ digest.p.cmx char.p.cmx array.p.cmx random.cmi -scanf.cmo: string.cmi printf.cmi pervasives.cmi obj.cmi list.cmi hashtbl.cmi \ - buffer.cmi array.cmi scanf.cmi -scanf.p.cmx: string.p.cmx printf.p.cmx pervasives.p.cmx obj.p.cmx list.p.cmx hashtbl.p.cmx \ - buffer.p.cmx array.p.cmx scanf.cmi -set.cmo: set.cmi -set.p.cmx: set.cmi -sort.cmo: array.cmi sort.cmi -sort.p.cmx: array.p.cmx sort.cmi -stack.cmo: list.cmi stack.cmi -stack.p.cmx: list.p.cmx stack.cmi -stdLabels.cmo: stringLabels.cmi listLabels.cmi arrayLabels.cmi stdLabels.cmi -stdLabels.p.cmx: stringLabels.p.cmx listLabels.p.cmx arrayLabels.p.cmx stdLabels.cmi -std_exit.cmo: -std_exit.p.cmx: -stream.cmo: string.cmi obj.cmi list.cmi lazy.cmi stream.cmi -stream.p.cmx: string.p.cmx obj.p.cmx list.p.cmx lazy.p.cmx stream.cmi -string.cmo: pervasives.cmi list.cmi char.cmi string.cmi -string.p.cmx: pervasives.p.cmx list.p.cmx char.p.cmx string.cmi -stringLabels.cmo: string.cmi stringLabels.cmi -stringLabels.p.cmx: string.p.cmx stringLabels.cmi -sys.cmo: sys.cmi -sys.p.cmx: sys.cmi -weak.cmo: sys.cmi obj.cmi hashtbl.cmi array.cmi weak.cmi -weak.p.cmx: sys.p.cmx obj.p.cmx hashtbl.p.cmx array.p.cmx weak.cmi +scanf.cmo : string.cmi printf.cmi pervasives.cmi obj.cmi list.cmi \ + hashtbl.cmi buffer.cmi array.cmi scanf.cmi +scanf.p.cmx : string.p.cmx printf.p.cmx pervasives.p.cmx obj.p.cmx list.p.cmx \ + hashtbl.p.cmx buffer.p.cmx array.p.cmx scanf.cmi +set.cmo : set.cmi +set.p.cmx : set.cmi +sort.cmo : array.cmi sort.cmi +sort.p.cmx : array.p.cmx sort.cmi +stack.cmo : list.cmi stack.cmi +stack.p.cmx : list.p.cmx stack.cmi +stdLabels.cmo : stringLabels.cmi listLabels.cmi arrayLabels.cmi \ + stdLabels.cmi +stdLabels.p.cmx : stringLabels.p.cmx listLabels.p.cmx arrayLabels.p.cmx \ + stdLabels.cmi +std_exit.cmo : +std_exit.p.cmx : +stream.cmo : string.cmi obj.cmi list.cmi lazy.cmi stream.cmi +stream.p.cmx : string.p.cmx obj.p.cmx list.p.cmx lazy.p.cmx stream.cmi +string.cmo : pervasives.cmi list.cmi char.cmi string.cmi +string.p.cmx : pervasives.p.cmx list.p.cmx char.p.cmx string.cmi +stringLabels.cmo : string.cmi stringLabels.cmi +stringLabels.p.cmx : string.p.cmx stringLabels.cmi +sys.cmo : sys.cmi +sys.p.cmx : sys.cmi +weak.cmo : sys.cmi obj.cmi hashtbl.cmi array.cmi weak.cmi +weak.p.cmx : sys.p.cmx obj.p.cmx hashtbl.p.cmx array.p.cmx weak.cmi diff --git a/stdlib/random.ml b/stdlib/random.ml index 76d118746..aa47536ba 100644 --- a/stdlib/random.ml +++ b/stdlib/random.ml @@ -25,7 +25,7 @@ passes all the Diehard tests. *) -external random_seed: unit -> int = "caml_sys_random_seed";; +external random_seed: unit -> int array = "caml_sys_random_seed";; module State = struct @@ -43,7 +43,7 @@ module State = struct Char.code d.[0] + (Char.code d.[1] lsl 8) + (Char.code d.[2] lsl 16) + (Char.code d.[3] lsl 24) in - let seed = if seed = [| |] then [| 0 |] else seed in + let seed = if Array.length seed = 0 then [| 0 |] else seed in let l = Array.length seed in for i = 0 to 54 do s.st.(i) <- i; @@ -64,7 +64,7 @@ module State = struct result ;; - let make_self_init () = make [| random_seed () |];; + let make_self_init () = make (random_seed ());; let copy s = let result = new_state () in @@ -172,7 +172,7 @@ let bool () = State.bool default;; let full_init seed = State.full_init default seed;; let init seed = State.full_init default [| seed |];; -let self_init () = init (random_seed());; +let self_init () = full_init (random_seed());; (* Manipulating the current state. *) |