How random number generator work?

How random number generator work

Computer တွေမှာ တချို.နေရာတွေ application တွေဖို. random number တွေလိုပါတယ်။ ဥပမာ game တခုမှာ initial position ချတာမျိုး neural network တွေ initial weight ထားတာမျိုးမှာလိုပါတယ်။ အဲ့ဒီ random တွေကိုဘယ်လိုထုတ်သလဲ ဘယ်ကရသလဲပေ့ါ။
ပထမဆုံးတချက်သိထားရမှာက Java မှာဆို Math.random, JavaScript မှာဆို Math.random , C မှာ rand() ဆိုတဲ့ method , function တွေကို pseudo random number generator လို.ခေါ်ပါတယ်။ Pseudo ဆိုတာ ဒီနေရာမှာ ထပ်နိုင်တယ်လို.ပြောတာပါ ဆိုချင်တာက တကယ့် random မဟုတ်ဘူးဆိုတာပါပဲ။

ခုနက ကောင်တွေ နောက်မှာသုံးထားတဲ့ algorithm ကို Linear Congruential Generator လို.ခေါ်ပါတယ်။ သူ.မှာက formula တကြောင်းပဲပါတယ်။

X(n+1) = a * X (n)+c. mod m
ဒီနေရာမှာ X(n) သည် X(0) သည် seed ပါ အစဦးဆုံးပေးရတဲ့ ကောင်ပါ သူ.ကနေ ဆက်ပြီးတော့တွက်သွားတာပါ။ a တို. c တို. m တို.က တော့ positive integer တွေပါ။လွယ်လွယ်ရှင်းပြရအောင် ဒီလိုလေးဆိုပါစို.
seed = x0= 5, a= 5, c =1 , m = 16
ဒါဆို x1 = 5*5+1 mod 16 = 26 mod 16 = 10
x2 = 5 *10 +1 mod 16 = 51 mod 16 = 3
x3 = 5 * 3 +1 mod 16 = 16 mod 16.= 0

ဒီလိုရသွားပါမယ်။ ဒါကို ကျွန်တော်တို.က 10 တွေ ၃ တွေ 0 တွေမလိုချင်ဘူး 0 ကနေ ၁ ကြားပဲလိုချင်ရင် ခုနက ရတာတွေကို m နဲ.ပြန်စားရင်ရပါမယ်။

ဒီ algorithm ရဲ. အဓိက အသက်က parameter ရွေးတာပါ။ ဒါကတော့ သချာင်္စိတ်ဝင်စားရင် လိုက်လေ့လာပါ။ အောက်က code က JS နဲ. random number တွေကို ထုတ်တဲ့ function ရေးထားတာပါ။
JavaScript မှာပါတဲ့ကောင်က seed ကို browser ကပေးထားတာပါ ကျွန်တော်ကတော့ Date ကနေယူလိုက်ပါတယ်။ Parameter တွေက Java မှာသုံးတဲ့ကောင်တွေကိုထဲ့ထားတာ။

function random(seed) {
var m = Math.pow(2,48);
var a = 25214903917 ;
var c = 11;
var x = seed ;
return function() {
x = (a * x + c) % m;
return x/m;
};
}
var rand = random(new Date().getTime());
console.log(rand());
console.log(rand());

Original link =>(https://m.facebook.com/story.php?story_fbid=pfbid05Bad98pMLgHVsU9xvUhH6GRCdc5R2qtS2jqRFaYxbADRsppKZodVuc658ragenegl&id=1819241055&mibextid=Nif5oz)

Leave a comment