Changeset: 1c0dcb93f603 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1c0dcb93f603 Modified Files: monetdb5/modules/kernel/microbenchmark.c monetdb5/modules/kernel/microbenchmark.h monetdb5/modules/kernel/microbenchmark.mal Branch: default Log Message:
added microbenchmark.random() variant with extra "seed" argument to set random-generator seed for repeatable deterministic random data (transplanted from c3ae690e568981df78bdec6b054dd7e873d2611d) diffs (64 lines): diff --git a/monetdb5/modules/kernel/microbenchmark.c b/monetdb5/modules/kernel/microbenchmark.c --- a/monetdb5/modules/kernel/microbenchmark.c +++ b/monetdb5/modules/kernel/microbenchmark.c @@ -33,7 +33,7 @@ #include "microbenchmark.h" static int -BATrandom(BAT **bn, oid *base, int *size, int *domain) +BATrandom(BAT **bn, oid *base, int *size, int *domain, int seed) { BUN n = (BUN) * size; BAT *b = NULL; @@ -63,6 +63,8 @@ BATrandom(BAT **bn, oid *base, int *size BATsetcount(b, n); /* create BUNs with random distribution */ + if (seed != int_nil) + srand(seed); if (*domain == int_nil) { BATloop(b, p, q) { *(int *) Tloc(b, p) = rand(); @@ -323,9 +325,14 @@ BATnormal(BAT **bn, oid *base, int *size str MBMrandom(int *ret, oid *base, int *size, int *domain){ + return MBMrandom_seed ( ret, base, size, domain, &int_nil ); +} + +str +MBMrandom_seed(int *ret, oid *base, int *size, int *domain, const int *seed){ BAT *bn = NULL; - BATrandom(&bn, base, size, domain); + BATrandom(&bn, base, size, domain, *seed); if( bn ){ if (!(bn->batDirty&2)) bn = BATsetaccess(bn, BAT_READ); BBPkeepref(*ret= bn->batCacheid); diff --git a/monetdb5/modules/kernel/microbenchmark.h b/monetdb5/modules/kernel/microbenchmark.h --- a/monetdb5/modules/kernel/microbenchmark.h +++ b/monetdb5/modules/kernel/microbenchmark.h @@ -36,6 +36,7 @@ #endif mb_export str MBMrandom(int *ret, oid *base, int *size, int *domain); +mb_export str MBMrandom_seed(int *ret, oid *base, int *size, int *domain, const int *seed); mb_export str MBMuniform(int *ret, oid *base, int *size, int *domain); mb_export str MBMnormal(int *ret, oid *base, int *size, int *domain, int *stddev, int *mean); mb_export str MBMmix(int *ret, int *batid); diff --git a/monetdb5/modules/kernel/microbenchmark.mal b/monetdb5/modules/kernel/microbenchmark.mal --- a/monetdb5/modules/kernel/microbenchmark.mal +++ b/monetdb5/modules/kernel/microbenchmark.mal @@ -21,6 +21,12 @@ command random(base:oid, size:int, domai address MBMrandom comment "Create a BAT with random integer distribution; domain == nil:int ? [0:RAND_MAX] : [0,domain)"; +command random(base:oid, size:int, domain:int, seed:int):bat[:oid,:int] +address MBMrandom_seed +comment "Create a BAT with random integer distribution, + using given seed (seed == nil:int -> no seed used); + domain == nil:int ? [0:RAND_MAX] : [0,domain)"; + command uniform(base:oid, size:int, domain:int):bat[:oid,:int] address MBMuniform comment "Create a BAT with uniform integer distribution"; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list