19
19
private GLib.Rand rand;
21
[CCode (cname = "v_random_new")]
21
22
private Random () {
22
23
this.rand = new GLib.Rand ();
26
[CCode (cname = "v_random_get_instance")]
25
27
public static Random get_instance () {
26
28
return _instance.once (() => {
27
29
return new Random ();
31
33
/* **** Instance versions *** */
34
[CCode (cname = "v_random_get_double")]
32
35
public double get_double () {
33
36
return rand.next_double ();
39
[CCode (cname = "v_random_get_range")]
36
40
public double get_double_range (double begin, double end) {
37
41
return rand.double_range (begin, end);
44
[CCode (cname = "v_random_get_int")]
40
45
public int32 get_int () {
41
46
return (int32) rand.next_int ();
49
[CCode (cname = "v_random_get_int_range")]
44
50
public int32 get_int_range (int32 begin, int32 end) {
45
51
return rand.int_range ((int32) begin, (int32) end);
54
[CCode (cname = "v_random_seed")]
48
55
public void seed (int32 seed) {
49
rand.set_seed ((uint32) seed);
56
rand.set_seed (seed.abs());
53
60
/* **** Static versions *** */
54
public static int32 get_static_int () {
61
[CCode (cname = "v_random_get_static_int")]
62
public static int32 get_static_int () {
55
63
Random r = Random.get_instance ();
56
64
return r.get_int ();
67
[CCode (cname = "v_random_get_static_double")]
59
68
public static double get_static_double () {
60
69
Random r = Random.get_instance ();
61
70
return r.get_double ();
73
[CCode (cname = "v_random_get_static_int_range")]
64
74
public static int32 get_static_int_range (int32 begin, int32 end) {
65
75
Random r = Random.get_instance ();
66
76
return r.get_int_range (begin, end);
79
[CCode (cname = "v_random_get_static_double_range")]
69
80
public static double get_static_double_range (double begin, double end) {
70
81
Random r = Random.get_instance ();
71
82
return r.get_double_range (begin, end);