Tôi muốn tạo 10.000 ma trận nhị phân ngẫu nhiên có cùng số lượng 1s mỗi hàng và mỗi cột dưới dạng ma trận nhị phân đã cho.Tạo ma trận nhị phân ngẫu nhiên
Ma trận là ~ 500 x ~ 10.000. Có khoảng 2.000.000 1s. Không có hàng hoặc cột nào.
Phương pháp hiện tại của tôi chuyển đổi ma trận nhị phân thành ma trận kề hai chân, và thực hiện 1.000.000 công tắc cạnh ngẫu nhiên để đảm bảo tính ngẫu nhiên. Điều này mất 13.000 giây cho 1 ma trận. Tôi đang mã hóa trong python, sử dụng một phiên bản sửa đổi của chức năng double_edge_swap của networkx.
Có cách nào hiệu quả hơn để tạo các ma trận như vậy không?
tôi đang tìm kiếm tên của vấn đề này. Đây là vấn đề chính của [chụp cắt lớp rời rạc] (https://en.wikipedia.org/wiki/Discrete_tomography) "liên quan đến việc tái tạo hình ảnh nhị phân từ các đường kẻ ngang và dọc của nó" và đối với trường hợp 2 chiều (theo hướng mạng không song song), vấn đề nằm ở P. Thật thú vị khi biết cần 10.000 cái gì có thể tái tạo ngẫu nhiên. –
Bạn nên xác định xem bạn có cần phân phối cụ thể hay không, vì các phương pháp khác nhau có thể cung cấp các bản phân phối hơi khác nhau. – Veedrac
Nó phụ thuộc nếu bạn muốn cải thiện chỉ hiệu quả để tạo ra ma trận, giải pháp tốt sẽ gọi c (hàm để tạo ma trận từ trăn. – ElConrado