void generateCFG(vertex_t* vertex_list, int nvertex, int maxsucc, Random* r, bool print_input){ //printf("in generateCFG\n"); int j; int k; int s; connect(&vertex_list[0], &vertex_list[1]); connect(&vertex_list[0], &vertex_list[2]); for(int i = 2; i < nvertex; ++i){ if(print_input){ printf("[%d] succ = {", i); } s = nextRand(r) % maxsucc +1; for (j = 0; j < s; ++j) { k = abs(nextRand(r)) % nvertex; if(print_input){ printf(" %d", k); } connect(&vertex_list[i], &vertex_list[k]); } if(print_input){ printf("}\n"); } } }
int main() { scanf("%d %d %d %d", &m, &q, &a, &b); for (ui i = 0; i < n; ++i) { c[i] = 0; } for (ui i = 0; i < m; ++i) { ui add = nextRand(); ui l = nextRand(); ui r = nextRand(); if (l > r) { ui temp = l; l = r; r = temp; } if (c[l] > mod) { c[l] %= mod; } c[l] = (c[l] + add) % mod; r++; if (r < n) { if (c[r] > mod) { c[r] %= mod; } c[r] = (c[r] + mod - add) % mod; } } for (ui i = 1; i < n; ++i) { c[i - 1] %= mod; c[i] += c[i - 1]; } for (ui i = 1; i < n; ++i) { c[i - 1] %= mod; c[i] += c[i - 1]; } ull sum = 0; for (ui i = 0; i < q; ++i) { ui l = nextRand(); ui r = nextRand(); if (l > r) { ui temp = l; l = r; r = temp; } if (sum > mod) { sum %= mod; } if (l <= 0) { sum = (sum + c[r]) % mod; } else { sum = (sum + (c[r] - c[l - 1])) % mod; } } printf("%lld\n", (sum % mod)); return 0; }
void generateUseDef(vertex_t* vertex_list, int nvertex, int nsym, int nactive, Random* r, bool print_input){ //printf("in generateUseDef\n"); int j; int sym; for(int i = 0; i < nvertex; ++i){ if(print_input){ printf("[%d] usedef = {", vertex_list[i].index); } for (j = 0; j < nactive; ++j) { sym = abs(nextRand(r)) % nsym; if (j % 4 != 0) { if(!bitset_get_bit(vertex_list[i].def, sym)){//!bitset_get_bit(v->def, sym)){ if(print_input){ printf(" u %d", sym); } bitset_set_bit(vertex_list[i].use, sym);//bitset_set_bit(v->use, sym, true); } }else{ if(!bitset_get_bit(vertex_list[i].use, sym)){//!bitset_get_bit(v->use, sym)){ if(print_input){ printf(" d %d", sym); } bitset_set_bit(vertex_list[i].def, sym);//bitset_set_bit(v->def, sym, true); } } } if(print_input){ printf("}\n"); } } }
void test_random_rand(){ Random* r = new_random(); setSeed(r, 1); int i; for(i = 0; i < 5; ++i){ printf("nextRand = %d\n", nextRand(r)); } }
int main(void){ uint8* key="Wiki"; struct rc4state* state=rc4new(key,strlen(key)); int i; while(1) putchar(nextRand(state)); return 0; }
char* createTag() { int i; char *tag = malloc(sizeof(char)*GENERATOR_TAG_SIZE); if (tag != NULL) { startRand(); for( i=0; i<GENERATOR_TAG_LENGTH; i++) { tag[i] = nextRand(2)==0?'0':'1'; } tag[GENERATOR_TAG_LENGTH] = '\0'; } else { #ifdef DEBUG fprintf(stderr, "@Generator: Failed tag malloc\n"); #endif } return tag; }
int64_t nextRandI64() { uint64_t rand = nextRand(); return reinterpret_cast<int64_t &>(rand); }