Exemplo n.º 1
0
uint64_t rand64(tinymt64_t *state, uint64_t n) {
    uint64_t x, max = ~UINT64_C(0);
    max -= max % n;
    do {
        x = tinymt64_generate_uint64(state);
    } while (x >= max);
    return x % n;
}
Exemplo n.º 2
0
Arquivo: urls.c Projeto: 0x0all/wrk
url_request *urls_request(tinymt64_t *rand) {
    switch (urls2.count) {
        case 0: return NULL;
        case 1: return urls2.requests[0];
    }

    uint64_t n = tinymt64_generate_uint64(rand);
    return urls2.requests[n % urls2.count];
}
Exemplo n.º 3
0
int main(int argc, char * argv[]) {
    tinymt64_t tinymt;
    tinymt.mat1 = strtoul("2406486510", NULL, 16);
    tinymt.mat2 = strtoul("4235788063", NULL, 16);
    tinymt.tmat = strtoul("932445695", NULL, 16);
    int seed = 1;
    uint64_t seed_array[5];
    if (argc >= 5) {
        seed = strtol(argv[4], NULL, 0);
    }
    printf("tinymt64 0x%08"PRIx32, tinymt.mat1);
    printf(" 0x%08"PRIx32, tinymt.mat2);
    printf(" 0x%016"PRIx64, tinymt.tmat);
    printf(" seed = %d\n", seed);
    tinymt64_init(&tinymt, seed);
    printf("64-bit unsigned integers r, where 0 <= r < 2^64\n");
    for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 3; j++) {
        printf("%20"PRIu64" ", tinymt64_generate_uint64(&tinymt));
    }
    printf("\n");
    }
    printf("init_by_array {%d}\n", seed);
    seed_array[0] = seed;
    tinymt64_init_by_array(&tinymt, seed_array, 1);
    printf("double numbers r, where 0.0 <= r < 1.0\n");
    for (int i = 0; i < 12; i++) {
    for (int j = 0; j < 4; j++) {
        printf("%.15f ", tinymt64_generate_double(&tinymt));
    }
    printf("\n");
    }
    printf("double numbers r, where 1.0 <= r < 2.0\n");
    for (int i = 0; i < 12; i++) {
    for (int j = 0; j < 4; j++) {
        printf("%.15f ", tinymt64_generate_double12(&tinymt));
    }
    printf("\n");
    }
    printf("double numbers r, where 0.0 < r <= 1.0\n");
    for (int i = 0; i < 12; i++) {
    for (int j = 0; j < 4; j++) {
        printf("%.15f ", tinymt64_generate_doubleOC(&tinymt));
    }
    printf("\n");
    }
    printf("double numbers r, where 0.0 <= r < 1.0\n");
    for (int i = 0; i < 12; i++) {
    for (int j = 0; j < 4; j++) {
        printf("%.15f ", tinymt64_generate_doubleOO(&tinymt));
    }
    printf("\n");
    }
}
Exemplo n.º 4
0
UInt64 Random::next64()
{
	return tinymt64_generate_uint64((tinymt64_t *)randState);
}
Exemplo n.º 5
0
/* generates a random int64 */
MVMint64 MVM_proc_rand_i(MVMThreadContext *tc) {
    MVMuint64 result = tinymt64_generate_uint64(tc->rand_state);
    return *(MVMint64 *)&result;
}