mt_rand() kullanımı

mt_rand() fonksiyonu olabilecek en basit anlatımla, rastgele rakam üretecidir. Sizin verdiğiniz değerler de dahil olmak üzere rakam üretir. Her çağırıldığında farklı bir rakam getirir. Bunu yaparken Mersenne Twister algoritmasını kullanır. Nedir derseniz aşağıda vereceğim Wikipedia sayfalarından okuyabilirsiniz.

Kod

Kullanımı oldukça basittir. Sadece fonksiyonu mt_rand() olarak çağırmak bile size rastgele sayı üretir. Bunu sıfır ile olabilecek en büyük sayı mt_getrandmax() fonksiyonu çıktısıyla sınırlar. Aşağıdaki kod gösterim alanında detayları aktardım;

mt_rand(); //Size rastgele sayı üretir Çıktısı 1604716014 ya da 1478613278 olabilir
mt_rand(min,max); // Belirttiğiniz minimum değerden maksimum değere kadar olan sayılardan bir tanesini getir.

Örnek olarak mt_rand(10,100) verdiğimizde karşımıza 10 ve ondan büyük, yüz ve yüzden küçük sayılar arasından rastgele bir sayı üretecektir. Yani 10 dan yüze kadar olan sayılardan birini getirecektir. Şöyle ki;

mt_rand(10,100) //10 dan 100 e kadar olan sayılardan bir tanesini getirir. Çıktısı 13 ya da 65 olabilir.

Şimdi tanımlamayı yaptığımıza göre gelelim bunu güzel bir şekilde nasıl kullanacağımıza.

Kullanımı

Ben MySQL üzerinden veri çağırırken RAND() ve bu tarz kullanılabilir rastgele kayıt çağırma yöntemlerini pek başarılı bulmuyorum. “Sen misin bu alemin kralı” derseniz ben de “Her yiğidin bi yoğurt yiyişi vardır” derim. Siz de kullanabilir ya da kullanmayabilirsiniz.

mt_rand() ile ürettiğim rastgele sayıyı MySQL dizesinde bulunan LIMIT fonksiyonuna ekleyerek her sayfa yenilenmesinde rastgele içerik gelmesini sağlıyorum. Şöyle ki;

$rand = mt_rand(0, 100); 
$icerik = mysql_query("SELECT * FROM icerik order by id ASC LIMIT $rand,10;");

Böylelikle bana mt_rand 0 dan 100 e kadar rastele bir sayı getiriyor ve LIMIT fonksiyonu sadece belirtilen alandan 10 adet içerik gösteriyor.

Hız konusunda ne alem, içeriklerin binlerce olduğu yerlerde nasıl derseniz, şu an 14 bin listelik bir sistemden oldukça başarılı ve hızlı getirme yapabiliyorum.

Selametle

PHP: mt_rand - Manual

PHP: mt_getrandmax - Manual

Mersenne Twister - Wikipedia

2 thoughts on “mt_rand() kullanımı”

  1. normal rand fonkisyonu ile arasında her hangi bir fark var mı ?

Comments are closed.