// Use different ids for different generators // Use different seeds for starting at different positions in sequence Random newRandom(int id, uint32 seed) { Random mt = get_mt_parameter_id_st(32,521,id,seed); if (mt == NULL) { fprintf(stderr,"\nnewRandom: get_mt_parameter_id_st failed\n"); exit(1); } sgenrand_mt(seed, mt); return mt; }
void generator(int k) { int j; for (j=0;j<k;j++) { /* This trys to find a small Mersenne Twister with period 2^521-1. */ mts[j] = get_mt_parameter_id_st(32,19937,rand() % 65536,4172); if (mts[j] == NULL){printf("Error on %d thread.\n", j);} else {sgenrand_mt(3241+40*j,mts[j]);} } }