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

Reply via email to