2014-09-25 22 views
6

Tôi muốn có số ngẫu nhiên giữa hai số thập phân nhỏ.Số ngẫu nhiên giữa hai số thập phân trong Swift

Giữa có thể là 0,8 và 1,3.

var duration = CGFloat(arc4random() % 0.8)/1.3 

hoặc

var duration = CGFloat(arc4random() % 0.5) + 0.8 

Cảm ơn!

+0

gọi màu đó hai lần và lưu vào mảng nếu bạn muốn nhận được 2 số ngẫu nhiên. – Bejibun

+0

Đây là môn toán đơn giản. Phạm vi của số là gì? –

+0

@HotLicks Tôi không hiểu. Ước gì tôi có thể làm điều này CGFloat (arc4random()% 0.5) + 0.8, nhưng tôi không biết làm thế nào để có được cú pháp đúng với các số thập phân. Phạm vi của tôi là 0,8 đến 1,3. – KKendall

Trả lời

33

Đây là một chức năng chung tôi vừa viết lên nhanh để có số ngẫu nhiên trong phạm vi.

func randomBetweenNumbers(firstNum: CGFloat, secondNum: CGFloat) -> CGFloat{ 
    return CGFloat(arc4random())/CGFloat(UINT32_MAX) * abs(firstNum - secondNum) + min(firstNum, secondNum) 
} 

Phải mất một số ngẫu nhiên, tìm thấy phần còn lại của số đó chia cho chênh lệch giữa hai tham số, sau đó bổ sung thêm bởi số lượng nhỏ hơn. Điều này đảm bảo số ngẫu nhiên nằm giữa hai số.

Tuyên bố từ chối trách nhiệm: Tôi chưa thử nghiệm tính năng này.

EDIT: Bây giờ chức năng này thực hiện những gì bạn muốn.

+1

Tôi không nghĩ rằng toán tử còn lại % chấp nhận một số dấu phẩy động làm đối số thứ hai. –

+2

@MartinR rằng lỗi chỉ là Swift hét lên với tôi vì có một Int% CGFloat. Khi tôi cast Int vào CGFloat, nó hoạt động. Và có, toán tử còn lại (không phải modulus) có hành vi khác trong Swift: https://developer.apple.com/library/ios/documentation/swift/conceptual/swift_programming_language/BasicOperators.html – erdekhayser

+0

@MartinR Bạn là chính xác. Nó không cho cùng một lý do như ví dụ của tôi – KKendall

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