2009-09-04 8 views
5

Tôi đã sử dụng hàm arc4random() để tạo một nhóm ngẫu nhiên và dãy số, nhưng tôi đã nói rằng điều này là quá mức cần thiết và tôi nên sử dụng hàm random() thay thế. Tuy nhiên, hàm random() cung cấp cho tôi cùng một nhóm và chuỗi số mỗi lần.Tạo các số ngẫu nhiên trong mục tiêu C cho iPhone SDK

Tôi gọi srand (thời gian (0)) một lần khi ứng dụng của tôi bắt đầu lần đầu tiên để thêm vào hàm random(). Bạn có bao giờ cần phải chèn sẵn hàm random() không?

Tôi có thiếu gì đó không?

Cảm ơn.

Trả lời

2

Không, bạn không cần phải chèn sẵn trình tạo số ngẫu nhiên. Có một số tính đồng nhất bổ sung thu được bằng cách tạo ra một số lượng số và ném chúng đi, nhưng trừ khi bạn đang tìm kiếm mức độ bảo mật tạo số ngẫu nhiên không cần thiết. Đối với hầu hết các mục đích, một bộ tạo số ngẫu nhiên giống hệt nhau đủ đồng đều.

4

Trước hết, ai đã nói với bạn arc4random quá mức cần thiết? Tôi sử dụng nó trong các dự án của mình, và (a) thỏa mãn các yêu cầu của tôi, (b) không hút tài nguyên (ít nhất là hiển thị với người dùng hoặc hiển nhiên đối với tôi), và (c) không quan trọng để thực hiện, vì vậy tôi không thực sự thấy cách sử dụng tương tự trong mã của riêng bạn có thể được gọi là "quá mức cần thiết".

Thứ hai, srand() hạt giống chức năng rand(), chứ không phải random(), do đó có thể là vấn đề của bạn. Và không, bạn không nên phải đặt lại máy phát điện vào bất kỳ lúc nào trong quá trình thực hiện chương trình của bạn - một khi trong quá trình khởi động là đủ.

+0

Làm thế nào để bạn gộp hàm ngẫu nhiên()? –

+0

Thử chức năng 'randomize()'. – Tim

+1

arc4random() không phải là quá mức cần thiết, và sẽ cho bạn kết quả tốt hơn đáng kể so với ngẫu nhiên(). –