Class: Random
Instance Method Summary collapse
Constructor Details
#initialize ⇒ Object
174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 |
# File 'mruby/mrbgems/mruby-random/src/random.c', line 174
static mrb_value
random_m_init(mrb_state *mrb, mrb_value self)
{
mrb_int seed;
rand_state *t;
t = random_ptr(self);
if (mrb_get_args(mrb, "|i", &seed) == 0) {
rand_init(t);
}
else {
rand_seed(t, (uint32_t)seed);
}
return self;
}
|
Instance Method Details
#bytes ⇒ Object
220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 |
# File 'mruby/mrbgems/mruby-random/src/random.c', line 220
static mrb_value
random_m_bytes(mrb_state *mrb, mrb_value self)
{
rand_state *t = random_ptr(self);
mrb_int i;
mrb_get_args(mrb, "i", &i);
mrb_value bytes = mrb_str_new(mrb, NULL, i);
uint8_t *p = (uint8_t*)RSTRING_PTR(bytes);
for (; i > 0; i--, p++) {
*p = (uint8_t)rand_uint32(t);
}
return bytes;
}
|
#rand ⇒ Object
191 192 193 194 195 196 197 198 199 |
# File 'mruby/mrbgems/mruby-random/src/random.c', line 191
static mrb_value
random_m_rand(mrb_state *mrb, mrb_value self)
{
mrb_int max;
rand_state *t = random_ptr(self);
max = get_opt(mrb);
return random_rand(mrb, t, max);
}
|
#srand ⇒ Object
201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'mruby/mrbgems/mruby-random/src/random.c', line 201
static mrb_value
random_m_srand(mrb_state *mrb, mrb_value self)
{
uint32_t seed;
uint32_t old_seed;
mrb_int i;
rand_state *t = random_ptr(self);
if (mrb_get_args(mrb, "|i", &i) == 0) {
seed = (uint32_t)time(NULL) ^ rand_uint32(t) ^ (uint32_t)(uintptr_t)t;
}
else {
seed = (uint32_t)i;
}
old_seed = rand_seed(t, seed);
return mrb_int_value(mrb, (mrb_int)old_seed);
}
|