2009-02-04 27 views
22

iPhone'da Objective C kullanarak rasgele sayılar oluşturmanın en iyi yolu nedir?
0 ile 4 arasında bir sayı oluşturmak için (int)((double) rand()/((double)(RAND_MAX) + (double) 1) * 5.0) kullanırsam, iPhone'u programa her başlattığımda, başlamak için aynı sayıları üretir.iPhone'da rasgele sayıları nasıl oluştururum?

cevap

71

çok benzer bir soru here on StackOverFlow yoktur. İşte daha iyi çözümlerden biridir (tohumlama için gerek) 'dir:

int r = arc4random() % 5; 
+11

5 0'dan 4'e kadar istiyorlar – user102008

+4

arc4random_uniform% 5'ten daha iyi bir seçenektir –

+0

@Catfish_Man Neden? – Thecafremo

3

programın başlangıcında Çağrı srand(), bu rasgele sayı üreteci reseed edeceğiz

10

Güncel saat ile rasgele sayı üreticisinin olmalıdır.

srand(time(0)); 
6

Ne kadar rasgele ihtiyacınız var? Kripto için yeterince rastgele isterseniz, SecRandomCopyBytes() öğesini kullanın.

15

i böylece bir dakika ve max

rasgele sayı üretimi için
2

Basit fonksiyon verebilir

#define RANDOM_SEED() srandom(time(NULL)) 
#define RANDOM_INT(__MIN__, __MAX__) ((__MIN__) + random() % ((__MAX__+1) - (__MIN__))) 

kullanın:

int r = arc4random() % 42; // generate number up to 42 (limit) 
+0

Cevap olarak gereksiz olsa da, burada 5 yerine 42 numarasının kullanılmasını seviyorum. – Toastor

+0

41'e kadar rastgele sayı üretmek istediğim için 42 verdim, bu yüzden 0 ve 41 dahil olmak üzere 0 ila 41 arasında üreteceğim, çünkü 41. –

+0

Fuarı'nı kullanmak yeterli. Bununla birlikte, "Galaksiye Otostop Rehberi" nü okumaya şiddetle teşvik edersiniz - bunun, programcılar için genel olarak isteğe bağlı olmayan bir okuma olduğuna inanıyorum. – Toastor

İlgili konular