示例#1
0
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");
		}
	}
}
示例#2
0
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;
}
示例#3
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");
		}
	}
}
示例#4
0
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));
    }
}
示例#5
0
int main(void){
	uint8* key="Wiki";
	struct rc4state* state=rc4new(key,strlen(key));	
	int i;
	
	while(1)
		putchar(nextRand(state));
	

	return 0;
}
示例#6
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;
}
示例#7
0
 int64_t nextRandI64() {
   uint64_t rand = nextRand();
   return reinterpret_cast<int64_t &>(rand);
 }