J2ME’de Rastgele Sayı ve Yazı Üretme
Bir ara bilgisayarda nasıl rastgele sayılar üretildiğini merak ediyordum. Örneğin; Winamp nasıl şarkı listesindeki şarkıları rastgele sırayla çalabiliyordu. Biz insanlar belli iki sayı arasında rastgele bir sayı seçmek istediğimize ortadaki sayıdan büyük olsun, ama en büyük sayıdan üçük olsun vs. şeklinde mantık yürütürüz. Fakat bilgisayarlar bunu nasıl yapıyordu. Bir sayı belirlenirse bu sayı üzerinde çeşitli matematiksel işlemler yaparak farklı bir sayı üretebilirdik ama hiçbirşeyi değiştirmeden ürettiğimiz sayı da aynı olacağına göre demek ki işlem yapacağımız sayının da değişmesi lazımdı. Ama bunu yapabilmek zaten rastgele bir sayı oluşturabilmek demekti. Bir süre bunu düşünmüş kafamda saçma sapan fikirler üretmiştim, taki doğru cevabı bir dergide bulana kadar.
Bir gün Anadolu Üniversitesi’nin kütüphanesinde güncel bilgisayar dergilerini inceliyordum. Adını tam olarak hatırlayamıyorum ama sanırım PC World dergisi idi, içinde programlama ile ilgili her sayısında bazı yazılar çıkardı. Bu seferki yazısı da ÅŸansıma rastgele sayı üretmekmiÅŸ.
Hemen merakla yazıyı okumaya başladım, tarihteki rastgele sayı üretme metodlarıyla ilgili fikirlerden vs. bahsediyordu başlarda. Asıl bombayı sona saklamışlar. Tabi benim için hayal kırıklığına uğratıcı bir bomba oldu.
Rastgele sayıyı üretmek için bir çekirdek sayısı belirlenip bu sayı üzerinde çeşitli matematiksel işlemler yapılarak belirlediğimiz sınırlarda bir rastgele sayı üretileiliyordu. Peki çekirdek sayı nasıl belirleniyordu, bu sayı neydi? İşte burası bomba, sistem saati, yani zaman.
Zaman bildiğiniz gibi devamlı değişiyor ve devamlı olarak artıyordu. Yani zamanı milisaniye cinsinden alıp üzerinde işlemler yaparak bir rastgele sayı üretebiliyordunuz.
Bir ara bir J2ME uygulamasımda rastgele bir metin ürettirmem gerekti. Bunu önce bir sayı üretip bunun ile de bir yazı seçerek yaptım.
Rastgele metin oluÅŸturma iÅŸlemini önce rastgele sayı üreterek yaptım (Daha farklı yöntemlerle de yapılabilir ama benim kullanmam gereken sınır dar olduÄŸu için uÄŸraÅŸmak istemedim.). J2ME’de J2SE ve J2EE’de olduÄŸu gibi rastgele sayı üretimi için Math.Random sınıfı yoktur. J2ME’de bu iÅŸe java.util.Random ile yapılır. Öncelikle bu sınıfın kullanılacağını import komutu ile belirtmeliyiz. Bunun kaynak dosyamızın başına;
import java.util.Random;
yazarak yaparız. Daha sonra da uygulamada rastgele metnin gerekli olduğu yere göre bir metod yazarız. Benim kullandığım metod doğrudan String döndürüyor.
İlk önce Random sınıfını başlatıp buna bir çekirdek sayısı değeri atıyoruz. Bunu setSeed() yöntemi ile yapıyoruz. Tabi milisaniye cinsinden sistem saatini de bu yönteme System.CurrentTimeMillis() yöntemiyle veriyoruz. Daha sonra da rastgele bir sayının oluşturulmasını sağlayan bir yöntem kullanıyoruz. Bu uygulamayı yazdığımız MIDP versiyonuna göre veya istediğimiz veri türüne göre değişmekle birlikte Random sınıfına nextInt(), nextLong(), nextFloat() gibi yöntemlerle rastgele sayımızı belirlediğimiz sınırlar arasında oluşturuyoruz. Ben aşağıdaki gibi bir String oluşturmayı seçtim. Yani RastgeleYazi() çağrıldığında rastgele bir yazı dönecek. Bundan böyle uygulamamızda gereken yerde
public String RastgeleYazi()
{
String rastgeleYazi;//Bir String sınıfı oluşturuyoruz
Random generator = new Random(); // Burada rastgele sınıfımızı başlatıyoruz
generator.setSeed(System.currentTimeMillis());//Rastgele sayı üretimi için sistem saatini çekirdek olarak atıyoruz
int sayi = 0 + generator.nextInt() % 5;//Burası ile de 0 ve 10 arasında rastgele bir sayı üretiyoruz. Sayının 0′dan büyük ve 10′dan küçük olduÄŸunu belirtiyoruz.
String SayiString=Integer.toString(sayi);// OluÅŸturduÄŸumuz sayıyı String türüne dönüştürürüz. Sonuç “-5, 3″ gibi deÄŸerler olacak fakat int türünde olmayacak.
//Aşağıda üretilen rastgele sayıya göre listemizdeki yazılardan birini seçeceğiz.
String yazi-5 = “- BeÅŸ”;
String yazi-4 = “Dünya bir tuzaktır, tanesi de arzulardır. // Mevlana”;
String yazi-3 = “Venedik’i gör, sonra öl.”;
String yazi-2 = “Tehdit eden kiÅŸi öldürür de!”;
String yazi-1 = “Ağız ayakları taşır.”;
String yazi0 = “Kesici aletlerin en keskini dildir.”;
String yazi1 = “Ot olursan, keçiler bile seni yer.”;
String yazi2 = “EÅŸek bile düştüğü yere tekrar düşmez.”;
String yazi3 = “İktidar gizlemesini bilene aittir.”;
String yazi4 = “Irmağı temiz su taşırmaz.”;
String yazi5 = “Tercüman demek hain demektir.”;
yazi = yazi+SayiString;
rastgeleYazi = yazi;
return rastgeleYazi;//RastgeleYazi() çağırıldığında rastgeleYazı’nın dönmesi saÄŸlanıyor
}
String rastgeleYazi = RastgeleYazi();
çağrısı ile rastgele bir yazı yazdırabiliyoruz. Yani önce bir rastgele sayı oluşturuyor ve sonra bunu kullanarak bir rastgele yazı seçiyoruz. Burada daha farklı yöntemlerde kullanılabilirdi fakat benim uygulamama yeterli olduğu için fazlasına gerek duymadım. Özellikle rastgele üretilen sayı ile bir yazının alınması kısmında daha fazla olasılığın olduğu durumlarda alınacak yazı ayrı bir dosyaya alınabilir ve rastgele üretilen sayı örneğin belirli bir satırı almak için kullanılabilir.
Bu ÅŸekilde java.util.Random sınıfı ile cep telefonumuzdaki bir uygulama için basit bir ÅŸekilde önce bir rastgele sayı üretebilir ve bu sayıyı bir yazıya çevirebilir eÄŸer bu yazı örneÄŸin bir resmin yolu olursa rastgele resimler gösterebilir veya aynı Winamp’taki gibi bir ÅŸarkı listesinde rastgele bir ÅŸarkı seçebiliriz.
Son Yazılar
- JavaME ile Bir Gün
- Siyasi Terimlerin Açıklamaları
- 2001 Yılı Google Arama Sonuçları
- Geri Geldim, Herkese İyi Bayramlar
- İyi ki Doğdun Google
- Kadınların Eline Verilmemesi Gereken 30 Şey
- Çıkarıyorum Artık
- Kadın, Kocası ve Adamın Annesi
- Google’da Aranmaması Gereken Ünlüler
- Programlama Dilleri Tarihçesi




