// Bell Test with Real and Pseudo Random Numbers // Real is Black, Pseudo is Red // Click to restart // John Clavin July 2, 2017 var realArray = []; var pseudoArray = []; var real_string; var realRndIndex; var pseudoRndIndex; var restartFlag; var rDots_x = []; var pDots_x = []; var numOfDots = 200; var bellHeight = 580; var loopCount = 0; function preload() { // Load 2MB Real Random File real_string = loadStrings("rrandom2mb.txt"); } function setup() { createCanvas(600, 600); noStroke(); background(220); restartFlag = false; for (var at = 0; at < 2000000; at++) { // Create Real Random Array realArray[at] = parseInt(real_string[0].substr(at, 1), 10); } for (var ap = 0; ap < 2000000; ap++) { pseudoArray[ap] = int(random(2)); // Create Pseudo Random Array } for (var b = 0; b < numOfDots; b++) { rDots_x[b] = 0; pDots_x[b] = 0; } } function draw() { background(220); // Reposition the Array Start Each Frame realRndIndex = int(random(1900000)); pseudoRndIndex = int(random(1900000)); var i; for (i = 0; i < 50; i++) { calculate_rX(); calculate_pX(); } for (i = 0; i < numOfDots; i++) { fill(0); ellipse(i * 3, height - rDots_x[i], 4, 4); fill(180, 0, 0); ellipse(i * 3, height - pDots_x[i], 4, 4); } if (loopCount < bellHeight) { loopCount++; } else { restartFlag = true; noLoop(); } } function mousePressed() { if(restartFlag === true) { for (var b = 0; b < numOfDots; b++) { rDots_x[b] = 0; pDots_x[b] = 0; } loopCount = 0; restartFlag = false; loop(); } return false; } function calculate_rX() { // Calc Real Random var rand; var headCount = 0; var xLocation; for (var c = 0; c < 2000; c++) { rand = realArray[realRndIndex]; realRndIndex++; if (rand == 1) { headCount += 1; } } xLocation = headCount - 900; // adjust to window rDots_x[xLocation] += 1; } function calculate_pX() { // Calc Pseudo Random var rand; var headCount = 0; var xLocation; for (var c = 0; c < 2000; c++) { rand = pseudoArray[pseudoRndIndex]; pseudoRndIndex++; if (rand == 1) { headCount += 1; } } xLocation = headCount - 900; // adjust to window pDots_x[xLocation] += 1; }