2012-02-21 35 views
5

Tôi đang tạo mạng Neural trong Java và cần tạo phương pháp để tạo ra trọng số ngẫu nhiên ban đầu.Nhận giá trị kép ngẫu nhiên giữa -1 và 1

Tôi cần tạo hàm trả về giá trị kép ngẫu nhiên giữa -1 và 1 nhưng không chắc chắn về logic để thực hiện việc này để mọi trợ giúp sẽ được đánh giá cao nhất.

+1

Bạn có muốn nó bao gồm hoặc độc quyền ở cuối dải ô không? Hoặc khác nhau ở cả hai đầu? Bạn nên luôn luôn xác định rằng khi bạn đang nói về phạm vi. Các câu trả lời bạn có ngày bao gồm -1 nhưng loại trừ 1. – paxdiablo

+0

... vì Math.random() trả về một giá trị kép với dấu dương, * lớn hơn hoặc bằng * đến 0,0 và * nhỏ hơn * 1.0. Mà tôi không biết cho đến khoảng 30 giây trước đây ... – DNA

+0

@pax Khi giao dịch với một khoảng thời gian thực, các thiết bị đầu cuối sẽ [gần như chắc chắn] (http://en.wikipedia.org/wiki/Almost_surely) không bao giờ được chọn anyway . Khi thay vì xử lý các khoảng thời gian trôi nổi, xác suất chọn ngẫu nhiên điểm cuối chỉ cao hơn một chút. –

Trả lời

7

Math.random() sẽ cung cấp cho bạn một đôi ngẫu nhiên giữa 0 và 1. Bạn có thể nhân kết quả là 2 và trừ 1 cho một đôi ngẫu nhiên giữa -1 và 1.

Hoặc bạn có thể áp dụng việc chuyển đổi tương tự cho một cuộc gọi phương pháp nextDouble() từ java.util.Random, nhưng điều này yêu cầu một trường hợp rõ ràng là Random trong khi đó được thực hiện phía sau hậu trường với Math.random().

9

Bạn có thể sử dụng phương thức nextDouble() của lớp Random.

Random rng = new Random(); 
// to get a double between -1 and 1 
return rng.nextDouble() * 2 - 1; // rng.nextDouble() is between 0 and 1 
Các vấn đề liên quan