Posted by Umut Gökbayrak in iPhone on August 9th, 2009
iPhone uygulamanızda rastgele bir sayı üretmeniz gerektiğinde, Objective-C’de bu iş için özelleşmiş bir sınıf olmadığı için C dilinin imkanlarından yardım almalısınız. Yardım alabileceğiniz sınıfların bazıları: rand(), srand(), random(), srandom() and arc4random().
Şahsi tercihim arc4random() metodundan yanadır, çünkü diğer metodlarda olduğu gibi seed’leme ihtiyacı olmaması ve kendi kendisini initialize edebilmesidir.
// 0 ile 199 arasında bir rastgele sayı üretir. int x = arc4random() % 200; // 700 ile 1000 arasında rastgele bir sayı üretir. int y = (arc4random() % 701) + 700);
No related posts.
Related posts brought to you by Yet Another Related Posts Plugin.
#1 by Akın İdil - August 9th, 2009 at 19:40
sadece ‘Random() % 7…’ gibide çalışabiliyor… :) Random ne yazıyorsun ki? ;)
#2 by Umut Gökbayrak - August 9th, 2009 at 20:16
Bir sürü yolu var evet. Random numara bana sürekli lazım oluyor :P ve ben de arc4random()’u tercih ediyordum. Aklıma geldi buraya da yazayım dedim.
#3 by efrasiyab - August 20th, 2009 at 15:03
merhaba, yazdığım bi uygulama için açılışında 999 farklı obje için 10dan fazla kez random sayı üretmem gerekiyordu ve arc4random() dehşet bir yavaşlamaya sebep oldu. 100 – 200 seferden çok bir şey farketmiyor da, yüksek sayıda rastlantısal sayı gerekiyorsa ya da tekrar tekrar çağrılacaksa başka yollar da faydalı olabilir.
#4 by Atılım Çetin - August 21st, 2009 at 13:20
Merhaba,
arc4random() bu kadar yavaşsa bir başka güzel çözüm Mersenne twister kullanmak olabilir:
http://en.wikipedia.org/wiki/Mersenne_twister
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html
#5 by erdinctaskin - September 29th, 2009 at 16:35
Merhaba,
Bende birkaç kez arc4random fonksiyonunu kullandım çok kritik bir yer olmadığı için yavaşlığına çok dikkat etmemiştim açıkçası. Teşekkürler.
Bu arada yorumda bir hata var sanırım, 700 ile 1400 arasında bir sayı türetiyor olması gerekiyor.
// 700 ile 1000 arasında rastgele bir sayı üretir.
int y = (arc4random() % 701) + 700);