Class: Random

Inherits:
Object show all
Defined in:
mruby/mrbgems/mruby-random/src/random.c

Instance Method Summary collapse

Constructor Details

#initializeObject



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

#bytesObject



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;
}

#randObject



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);
}

#srandObject



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);
}