Skip to content

Commit 20c3a00

Browse files
committed
move pseudo-random seeder and generator to Lib
1 parent ba40db9 commit 20c3a00

File tree

2 files changed

+19
-19
lines changed

2 files changed

+19
-19
lines changed

src/lib/index.js

+16
Original file line numberDiff line numberDiff line change
@@ -876,3 +876,19 @@ lib.subplotSort = function(a, b) {
876876
}
877877
return numB - numA;
878878
};
879+
880+
// repeatable pseudorandom generator
881+
var randSeed = 2000000000;
882+
883+
lib.seedPseudoRandom = function() {
884+
randSeed = 2000000000;
885+
};
886+
887+
lib.pseudoRandom = function() {
888+
var lastVal = randSeed;
889+
randSeed = (69069 * randSeed + 1) % 4294967296;
890+
// don't let consecutive vals be too close together
891+
// gets away from really trying to be random, in favor of better local uniformity
892+
if(Math.abs(randSeed - lastVal) < 429496729) return lib.pseudoRandom();
893+
return randSeed / 4294967296;
894+
};

src/traces/box/plot.js

+3-19
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,6 @@ var d3 = require('d3');
1313
var Lib = require('../../lib');
1414
var Drawing = require('../../components/drawing');
1515

16-
// repeatable pseudorandom generator
17-
var randSeed = 2000000000;
18-
19-
function seed() {
20-
randSeed = 2000000000;
21-
}
22-
23-
function rand() {
24-
var lastVal = randSeed;
25-
randSeed = (69069 * randSeed + 1) % 4294967296;
26-
// don't let consecutive vals be too close together
27-
// gets away from really trying to be random, in favor of better local uniformity
28-
if(Math.abs(randSeed - lastVal) < 429496729) return rand();
29-
return randSeed / 4294967296;
30-
}
31-
3216
// constants for dynamic jitter (ie less jitter for sparser points)
3317
var JITTERCOUNT = 5; // points either side of this to include
3418
var JITTERSPREAD = 0.01; // fraction of IQR to count as "dense"
@@ -179,8 +163,8 @@ function plotPoints(sel, axes, trace, t) {
179163
// to support violin points
180164
var mode = trace.boxpoints || trace.points;
181165

182-
// repeatable pseudorandom number generator
183-
seed();
166+
// repeatable pseudo-random number generator
167+
Lib.seedPseudoRandom();
184168

185169
sel.selectAll('g.points')
186170
// since box plot points get an extra level of nesting, each
@@ -247,7 +231,7 @@ function plotPoints(sel, axes, trace, t) {
247231
var v = pt.v;
248232

249233
var jitterOffset = trace.jitter ?
250-
(newJitter * jitterFactors[i] * (rand() - 0.5)) :
234+
(newJitter * jitterFactors[i] * (Lib.pseudoRandom() - 0.5)) :
251235
0;
252236

253237
var posPx = d.pos + bPos + bdPos * (trace.pointpos + jitterOffset);

0 commit comments

Comments
 (0)