2009-02-04 43 views
22

Cách tốt nhất để tạo các số ngẫu nhiên bằng cách sử dụng Objective C trên iPhone là gì?
Nếu tôi sử dụng (int)((double) rand()/((double)(RAND_MAX) + (double) 1) * 5.0) để tạo một số từ 0 đến 4, mỗi khi tôi khởi động chương trình trên iPhone, nó sẽ tạo ra các số giống nhau để bắt đầu.Làm cách nào để tạo số ngẫu nhiên trên iPhone?

Trả lời

71

Có một câu hỏi rất giống here on StackOverFlow. Đây là một trong những giải pháp tốt hơn (không cần cho hạt giống):

int r = arc4random() % 5; 
+11

5 nếu họ muốn từ 0 đến 4 – user102008

+4

arc4random_uniform là lựa chọn tốt hơn% 5 –

+0

@Catfish_Man Tại sao? – Thecafremo

3

Gọi srand() lúc bắt đầu chương trình của bạn, nó sẽ gieo hạt tạo số ngẫu nhiên

10

Bạn nên giống các bộ tạo số ngẫu nhiên với thời gian hiện tại.

srand(time(0)); 
6

Bạn cần ngẫu nhiên như thế nào? Nếu bạn muốn đủ ngẫu nhiên cho mật mã, sau đó sử dụng SecRandomCopyBytes().

15

tôi sử dụng

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

để bạn có thể cung cấp cho một min và max

2

chức năng đơn giản cho hệ số ngẫu nhiên:

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

Trong khi dư thừa như một câu trả lời, tôi thích cách số 42 đang được sử dụng thay vì 5 ở đây. – Toastor

+0

Vì tôi muốn tạo số ngẫu nhiên lên đến 41 vì vậy tôi đã cho 42, vì vậy nó sẽ tạo ra từ 0 đến 41 bao gồm 0 & 41, như tôi muốn sử dụng 41. –

+0

Đủ công bằng. Tuy nhiên, bạn được khuyến khích đọc "Hướng dẫn về Hitchhikers cho Galaxy" - Tôi tin rằng đó là một cách đọc không bắt buộc đối với các lập trình viên nói chung. – Toastor

Các vấn đề liên quan