Changeset: c3ae690e5689 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c3ae690e5689
Modified Files:
monetdb5/modules/kernel/microbenchmark.c
monetdb5/modules/kernel/microbenchmark.h
monetdb5/modules/kernel/microbenchmark.mal
Branch: holindex
Log Message:
added microbenchmark.random() variant with extra "seed" argument
to set random-generator seed for repeatable deterministic random data
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
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list