23 |
Random numbers |
Random numbers |
24 |
*/ |
*/ |
25 |
|
|
26 |
|
#include <time.h> |
27 |
|
|
28 |
#include "include.h" |
#include "include.h" |
29 |
#include "num_include.h" |
#include "num_include.h" |
30 |
|
|
33 |
#endif |
#endif |
34 |
|
|
35 |
object |
object |
36 |
rando(x, rs) |
rando(object x, object rs) |
|
object x, rs; |
|
37 |
{ |
{ |
38 |
enum type tx; |
enum type tx; |
39 |
object z; |
object z; |
58 |
z = alloc_object(t_longfloat); |
z = alloc_object(t_longfloat); |
59 |
lf(z) = d; |
lf(z) = d; |
60 |
return(z); |
return(z); |
61 |
} else |
} else { |
62 |
FEerror("~S is not an integer nor a floating-point number.", |
FEerror("~S is not an integer nor a floating-point number.", |
63 |
1, x); |
1, x); |
64 |
|
return(Cnil); |
65 |
|
} |
66 |
} |
} |
67 |
|
|
68 |
object |
object |
69 |
make_random_state(rs) |
make_random_state(object rs) |
|
object rs; |
|
70 |
{ |
{ |
71 |
object z; |
object z; |
72 |
#ifdef AOSVS |
#ifdef AOSVS |
89 |
|
|
90 |
#endif |
#endif |
91 |
return(z); |
return(z); |
92 |
} else if (type_of(rs) != t_random) |
} else if (type_of(rs) != t_random) { |
93 |
FEwrong_type_argument(sLrandom_state, rs); |
FEwrong_type_argument(sLrandom_state, rs); |
94 |
else { |
return(Cnil); |
95 |
|
} else { |
96 |
z =alloc_object(t_random); |
z =alloc_object(t_random); |
97 |
z->rnd.rnd_value = rs->rnd.rnd_value; |
z->rnd.rnd_value = rs->rnd.rnd_value; |
98 |
return(z); |
return(z); |
99 |
} |
} |
100 |
} |
} |
101 |
|
|
102 |
advance_random_state(rs) |
void |
103 |
object rs; |
advance_random_state(object rs) |
104 |
{ |
{ |
105 |
rs->rnd.rnd_value |
rs->rnd.rnd_value |
106 |
= rs->rnd.rnd_value |
= rs->rnd.rnd_value |
110 |
} |
} |
111 |
|
|
112 |
|
|
113 |
Lrandom() |
void |
114 |
|
Lrandom(void) |
115 |
{ |
{ |
116 |
int j; |
int j; |
117 |
object x; |
object x; |
|
object rs; |
|
118 |
|
|
119 |
j = vs_top - vs_base; |
j = vs_top - vs_base; |
120 |
if (j == 1) |
if (j == 1) |
127 |
vs_push(x); |
vs_push(x); |
128 |
} |
} |
129 |
|
|
130 |
Lmake_random_state() |
void |
131 |
|
Lmake_random_state(void) |
132 |
{ |
{ |
133 |
int j; |
int j; |
134 |
object x; |
object x; |
142 |
vs_push(x); |
vs_push(x); |
143 |
} |
} |
144 |
|
|
145 |
Lrandom_state_p() |
void |
146 |
|
Lrandom_state_p(void) |
147 |
{ |
{ |
148 |
check_arg(1); |
check_arg(1); |
149 |
if (type_of(vs_pop) == t_random) |
if (type_of(vs_pop) == t_random) |
152 |
vs_push(Cnil); |
vs_push(Cnil); |
153 |
} |
} |
154 |
|
|
155 |
init_num_rand() |
void |
156 |
|
init_num_rand(void) |
157 |
{ |
{ |
158 |
Vrandom_state = make_special("*RANDOM-STATE*", |
Vrandom_state = make_special("*RANDOM-STATE*", |
159 |
make_random_state(Ct)); |
make_random_state(Ct)); |