PseudoRandomDeterministicBinaryGenerator
Potential solution to http://codegolf.stackexchange.com/questions/6868/generate-a-completely-deterministic-pseudorandom-bit-stream
by briguy37
JavaScript
var getDeterministicPseudoRandString = function(length){
var randString = '';
var i = 2;
var prevRand = '';
outerLoop:
while(randString.length < length){
var nextRand, nextFullRand = Math.sqrt(i++).toString(2).substring(1).replace('.', '');
nextRand = nextFullRand;
for(var j = prevRand.length; j > 0; j--){
var replaceString = prevRand.substring(0, j);
nextRand = nextFullRand;
if(nextFullRand.indexOf(replaceString) == 0){
if(j == prevRand.length && j > 30){
//start i over at 2
console.log('max i reached: ' + i);
i = 2;
continue outerLoop;
} else {
nextRand = nextFullRand.replace(replaceString, '');
}
break;
}
}
prevRand = nextFullRand;
randString += nextRand;
}
return randString.substring(0, length);//Return the substring with the appropriate length
};
var startTime = new Date();
var pseudoRandomString = getDeterministicPseudoRandString(1000);
var endTime = new Date();
console.log(pseudoRandomString);
console.log('Time for 1000 pseudo-random chars: ' + (endTime.getTime() - startTime.getTime() + 'ms'));
startTime = new Date();
pseudoRandomString = getDeterministicPseudoRandString(100000);
endTime = new Date();
console.log('Time for 100000 pseudo-random chars: ' + (endTime.getTime() - startTime.getTime() + 'ms'));