// Generate Transactions // void gen_rules(TransPar &par) { StringSet *lits; StringSetIter *patterns; Transaction *trans; poisson_distribution<LINT> tlen(par.tlen - 1); ofstream data_fp; ofstream pat_fp; data_fp.open(data_file, ios::trunc); pat_fp.open(pat_file, ios::trunc); lits = new StringSet(par.nitems, par.lits); // Reset random seed generator before generating transactions if (par.seed < 0) generator.seed(par.seed); par.write(pat_fp); lits->display(pat_fp); patterns = new StringSetIter(*lits); for (LINT i = 0; i < par.ntrans; i ++) { trans = mk_tran(*patterns, tlen(generator) + 1); if (par.ascii) trans->write_asc(data_fp); else trans->write(data_fp); delete trans; } data_fp.close(); pat_fp.close(); }
// Generate Transactions // void gen_rules(TransPar &par) { StringSet *lits; StringSetIter *patterns; Transaction *trans; PoissonDist *tlen; ofstream data_fp; ofstream pat_fp; ofstream conf_fp; //added by MJZaki data_fp.open(data_file); pat_fp.open(pat_file); conf_fp.open(conf_file); //added by MJZaki if (data_fp.fail() || pat_fp.fail() || conf_fp.fail()) { cerr << "Error opening output file" << endl; exit(1); } lits = new StringSet(par.nitems, par.lits); // Reset random seed generator for before generating transactions if (par.seed < 0) RandSeed::set_seed(par.seed); tlen = new PoissonDist(par.tlen - 1); par.write(pat_fp); lits->display(pat_fp); patterns = new StringSetIter(*lits); LINT NTRANS = 0; //Transaction::set_print_cid(FALSE); // added by me to suppress cid for (LINT i = 0; i < par.ntrans; i++) { trans = mk_tran(*patterns, (*tlen)() + 1, par.lits.npats); if (trans->tid < par.mintid) par.mintid = trans->tid; if (trans->tid > par.maxtid) par.maxtid = trans->tid; if (par.ascii) trans->write_asc(data_fp); else trans->write(data_fp); //cout << "TRANS SZ " << trans->size() << endl; if (trans->size() > 0) NTRANS++; //added by MJZaki: repeat if trans empty else i--; delete trans; } data_fp.close(); pat_fp.close(); //added by MJZaki if (par.ascii) { conf_fp << NTRANS << "\n"; conf_fp << par.nitems << "\n"; conf_fp << par.tlen << "\n"; conf_fp << par.mintid << "\n"; conf_fp << par.maxtid << "\n"; } else { cout << "WRITING " << NTRANS << " " << par.nitems << endl; conf_fp.write((char *) &NTRANS, sizeof(LINT)); conf_fp.write((char *) &par.nitems, sizeof(LINT)); conf_fp.write((char *) &par.tlen, sizeof(FLOAT)); conf_fp.write((char *) &par.mintid, sizeof(LINT)); conf_fp.write((char *) &par.maxtid, sizeof(LINT)); } conf_fp.close(); }