2013-06-26 28 views
7

Tôi cần gửi một chuỗi số ngẫu nhiên giống hệt nhau đến một mạng lưới ứng dụng được phân phối.Xác định số ngẫu nhiên trên các hệ thống

Vì trình tự như vậy có thể khá dài, tôi đã nghĩ đến việc gửi chỉ số khởi tạo hạt giống tập trung (được tạo ngẫu nhiên) và độ dài của chuỗi mong muốn.

Cho rằng mọi thành phần trên bàn tay nhận sẽ sử dụng cùng phiên bản .NET, đó có phải là giải pháp khả thi để có dữ liệu ngẫu nhiên giống nhau được tạo trên tất cả các nút của tôi không?

+1

Xem http://stackoverflow.com/questions/17094189/crossplatform-random-number-generator – drch

+0

Cảm ơn các con trỏ. Bạn có muốn viết câu trả lời này để tôi có thể đánh dấu là được chấp nhận không? – Andrea

Trả lời

9

Bạn sẽ có thể phân phối hạt giống ngẫu nhiên (int seed) và tạo lại cùng một chuỗi giả định rằng bạn đang sử dụng cùng một phiên bản .NET trong mọi môi trường.

Remarks on System.Random @ MSDN

Thuyết Người gọi Việc thực hiện các bộ tạo số ngẫu nhiên trong lớp ngẫu nhiên không được đảm bảo để duy trì giống nhau trên phiên bản chính của .NET Framework. Do đó, mã ứng dụng của bạn không được giả định rằng cùng một hạt giống sẽ dẫn đến cùng một chuỗi giả ngẫu nhiên trong các phiên bản khác nhau của Khuôn khổ .NET.

Nếu bạn có thể thấy trường hợp phiên bản khung sẽ thay đổi hoặc nếu bạn cần tạo lại chuỗi cũ sau khi bắt đầu sử dụng phiên bản mới, bạn sẽ muốn tạo triển khai ngẫu nhiên của riêng mình.

Xem câu trả lời của câu hỏi này cho con trỏ: Crossplatform random number generator

1

Bạn có thể sử dụng lớp Random với hạt giống hoặc sử dụng kiến ​​trúc hướng dịch vụ.

Random khi được khởi tạo bằng hạt giống sẽ tạo ra một chuỗi giống nhau.

+2

Có một cảnh báo quan trọng về điều này đã được thảo luận trên SO trước đây. Xem câu trả lời của drch. – jerry