দ্রষ্টব্য: এই কোডটি মূলত উপরের প্রশ্নের মধ্যে অন্তর্ভুক্ত ছিল। প্রশ্নটি সংক্ষিপ্ত ও কেন্দ্রীভূত রাখার স্বার্থে, আমি এটিকে এই সম্প্রদায় উইকি উত্তরের দিকে নিয়ে গিয়েছি।
আমি এই কোডটি চারদিকে লাথি মেরে পেয়েছি এবং এলোমেলো নম্বর পাওয়ার জন্য এবং পরে বীজটি ব্যবহার করার জন্য এটি দুর্দান্ত কাজ করেছে বলে মনে হচ্ছে তবে যুক্তিটি কীভাবে কাজ করে তা আমি নিশ্চিত নই (যেমন 2345678901, 48271 এবং 2147483647 নম্বর এসেছে)।
function nextRandomNumber(){
var hi = this.seed / this.Q;
var lo = this.seed % this.Q;
var test = this.A * lo - this.R * hi;
if(test > 0){
this.seed = test;
} else {
this.seed = test + this.M;
}
return (this.seed * this.oneOverM);
}
function RandomNumberGenerator(){
var d = new Date();
this.seed = 2345678901 + (d.getSeconds() * 0xFFFFFF) + (d.getMinutes() * 0xFFFF);
this.A = 48271;
this.M = 2147483647;
this.Q = this.M / this.A;
this.R = this.M % this.A;
this.oneOverM = 1.0 / this.M;
this.next = nextRandomNumber;
return this;
}
function createRandomNumber(Min, Max){
var rand = new RandomNumberGenerator();
return Math.round((Max-Min) * rand.next() + Min);
}
//Thus I can now do:
var letters = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'];
var numbers = ['1','2','3','4','5','6','7','8','9','10'];
var colors = ['red','orange','yellow','green','blue','indigo','violet'];
var first = letters[createRandomNumber(0, letters.length)];
var second = numbers[createRandomNumber(0, numbers.length)];
var third = colors[createRandomNumber(0, colors.length)];
alert("Today's show was brought to you by the letter: " + first + ", the number " + second + ", and the color " + third + "!");
/*
If I could pass my own seed into the createRandomNumber(min, max, seed);
function then I could reproduce a random output later if desired.
*/