Exemplo n.º 1
0
uint64_t xorshift64star_uniform( uint64_t range ) {
    if (range == 0 || range == 1) { return 0; }
    uint64_t cutoff = UINT64_MAX - ( UINT64_MAX % range );
    uint64_t result;
    while (( result = xorshift64star( )) > cutoff ) ;
    return result % range;
}
Exemplo n.º 2
0
static void
array_init(void)
{
    for (int i = 0; i < ARRAY_SIZE; i++)
        array[i] = i;
    for (int i = ARRAY_SIZE - 1; i > 0; i--) {
        int swap = xorshift64star() % (i + 1);
        int tmp = array[i];
        array[i] = array[swap];
        array[swap] = tmp;
    }
}
Exemplo n.º 3
0
static int
iter_sample(strm_stream* strm, strm_value data)
{
  struct sample_data* d = strm->data;
  uint64_t r;

  if (d->i < d->len) {
    d->samples[d->i++] = data;
    return STRM_OK;
  }
  xorshift64init();
  r = xorshift64star()%(d->i);
  if (r < d->len) {
    d->samples[r] = data;
  }
  d->i++;
  return STRM_OK;
}
Exemplo n.º 4
0
int main()
{
    int k;
    uint64_t s[16];

    initxorshift64star(0x1234567887654321);

    printf("Seed:\n");
    for (k = 0; k < 16; ++k) {
	s[k] = xorshift64star();
	printf("%2d %llu\n", k, s[k]);
    }


    initxorshift1024star(s);

    printf("Outputs:\n");
    for (k = 0; k < 32; ++k) {
	printf("%2d %llu\n", k, xorshift1024star());
    }

    return 0;
}