Ben aslında bu merak oldum. I Math.random
JavaScript uygulandığında aslında nasıl yapıldığını bakmak için zaman aldı. Ben bir tane yapmak için en iyi yol değildir eminim rağmen ben ancak, benim kendi küçük rastgele jeneratör yapmak yoktu ve ben bu performans söz konusu olduğunda çok verimli olmadığından kesinlikle eminim.
(function() {
var rand = "0.";
for(var i=10; i>=0; i--)
{
rand = rand + (function() {
var start = new Date().getTime();
for(var i=100000; i>=0; i--) { }
return new Date().getTime() - start;
})();
}
return eval(rand);
})();
Sadece ben kendime sorduğumda ile gelip düşündüm "Nasıl bir bilgisayar muhtemelen rastgele bir sayı ile gelebilir?" aslında oldukça basit. Çoğunuz muhtemelen sadece yukarıda koduna bakarak bilemez gibi, rasgele sayılar aslında bir for loop
işlemek için bilgisayar için gereken süreyi tarafından oluşturulur. Tabii bilgisayar, işlem verileri çok hızlı bir şekilde (verilerin işlenmesi için yapılıyor). Bu nedenle, biz bunu en az bir milisaniye veya öylesine için bilgisayarı gecikme olacağı büyük bir döngü vermek zorunda kaldı. (Bu ben de verimsiz olduğunu söyledi varmaya ne olduğunu.) Döngünün infaz tamamlandıktan sonra, biz sadece döngü başlamış zaman ve sona erdi zaman arasındaki farkı toplandı. Bu, birkaç milisaniye ile sonuçlanır. Biz bu döngüler on kez çalıştırın ve 0.
dizenin sonuna zaman ekleyerek bu döngüler tamamlamak için gereken ne kadar zaman log. Bilgisayar diğer zamanlarda hızla zamanlarda ve yavaş yavaş verileri işlemek için izin verir CPU rastgele ani çünkü bu, tamamen rasgele sayıda sonuçlanır. Fonksiyonunun sonunda, biz sadece bir ondalık dize dönüştürmek ve geri!