Esempio n. 1
0
BOOL APIENTRY DllMain(HMODULE, DWORD reason_for_call, LPVOID)
{
    if (reason_for_call == DLL_PROCESS_ATTACH)
    {
        SYSTEMTIME st;
        GetSystemTime(&st);
        DWORD ticks = GetTickCount();
        WORD t1 = LOWORD(ticks);
        WORD t2 = HIWORD(ticks);
        uint32_t seeds[8];
        seeds[0] = MAKELONG(st.wDay^t1, st.wDayOfWeek);
        seeds[1] = MAKELONG(st.wMilliseconds, st.wHour^st.wMonth);
        seeds[2] = MAKELONG(st.wYear^t2, st.wDay);
        seeds[3] = MAKELONG(st.wMilliseconds^st.wYear, st.wSecond);
        seeds[4] = MAKELONG(st.wMonth, st.wMilliseconds^t2);
        seeds[5] = MAKELONG(st.wDayOfWeek, t1);
        seeds[6] = MAKELONG(st.wMinute^t1, st.wHour^st.wMilliseconds);
        seeds[7] = MAKELONG(st.wSecond^st.wDayOfWeek, st.wYear^st.wSecond);
        tinymt32_init_by_array(&random_handler, seeds, 8);
    }
    return TRUE;
}
Esempio n. 2
0
int main(int argc, char * argv[]) {
    if (argc < 4) {
	printf("%s mat1 mat2 tmat [seed]\n", argv[0]);
	return -1;
    }
    tinymt32_t tinymt;
    tinymt.mat1 = strtoul(argv[1], NULL, 16);
    tinymt.mat2 = strtoul(argv[2], NULL, 16);
    tinymt.tmat = strtoul(argv[3], NULL, 16);
    int seed = 1;
    uint32_t seed_array[4];

    if (argc >= 5) {
	seed = strtol(argv[4], NULL, 0);
    }
    printf("tinymt32 0x%08"PRIx32, tinymt.mat1);
    printf(" 0x%08"PRIx32, tinymt.mat2);
    printf(" 0x%08"PRIx32, tinymt.tmat);
    for (int n = 0; n < 4; n++) {
        seed_array[n] = seed + n;
    }
    printf(" seed array = [%d, %d, %d, %d]\n", 
        seed_array[0],
        seed_array[1],
        seed_array[2],
        seed_array[3]);
    tinymt32_init_by_array(&tinymt, seed_array, 4);
    state_dump(&tinymt);
    printf("mat1 %u ", tinymt.mat1);
    printf("mat2 %u ", tinymt.mat2);
    printf("tmat %u\n", tinymt.tmat);
    for (int i = 0; i < 10; i++) {
	    printf("%"PRIu32"\n", tinymt32_generate_uint32(&tinymt));
	    state_dump(&tinymt);
    }
}