2016-08-16 18 views
11

Câu lệnh này thường thành công trong việc tạo ra 3 số ngẫu nhiên duy nhất, nhưng đôi khi nó chỉ tạo ra 2 số duy nhất.tạo số ngẫu nhiên duy nhất trong Julia

rand(1:length(matches), 3) 

Tôi có thể viết lại điều này để đảm bảo 3 số ngẫu nhiên duy nhất luôn được tạo. (Tôi mở để sử dụng các chức năng khác, vv, cũng)

Cảm ơn

+2

FYI lý tưởng bạn không nên sử dụng các biến mà bạn chưa xác định trong câu hỏi (tức là khớp). Không quan trọng quá nhiều ở đây mặc dù. –

+2

câu trả lời: http://stackoverflow.com/questions/36047516/julia-generating-unique-random-integer-array/36048024#36048024 – amrods

Trả lời

9

đơn giản trả lời: (thêm lời giải thích đầy đủ dưới đây)

using StatsBase 
MyRand = sample(1:10, 3, replace = false) 

Có rất nhiều biến chứng mà thể đi vào điều này. Ví dụ, bất cứ khi nào vẽ số ngẫu nhiên, luôn luôn có một số phân phối được rút ra từ. Nếu bạn đang vẽ nhiều số ngẫu nhiên, thì mô tả thông thường về số liệu này trong thống kê là bạn đang vẽ từ phân phối đa chiều. Nếu phân phối của bạn là rời rạc (tức là bất kỳ số cụ thể nào có xác suất dương được chọn) thì nó thực sự sẽ là phân phối khác nếu bạn chỉ định rằng không có hai mục nhập nào có thể bằng nhau. Do đó, tùy thuộc vào chính xác những gì bạn muốn, điều này có thể có thể tương đối phức tạp một cách nhanh chóng. Ví dụ. nếu bạn muốn 5 biến ngẫu nhiên Poisson nhưng với quy định rằng không có hai bằng nhau - để thực hiện điều này trong mã tương đối đơn giản, nhưng chi tiết cụ thể của phân phối sẽ tạo ra điều này có liên quan nhiều hơn và các biến bạn vẽ sẽ không còn nữa là các biến ngẫu nhiên Poisson chuẩn. Tùy thuộc vào ứng dụng của bạn, điều này có thể hoặc có thể không quan trọng đối với bạn để ghi nhớ. NHƯNG, trong trường hợp này, có vẻ như bạn đang tìm cách chọn ba phần tử ngẫu nhiên từ danh sách một số loại, gán xác suất bằng nhau cho mỗi loại được chọn và đảm bảo rằng không có phần tử nào được chọn hai lần. Trong trường hợp này, hàm sample() từ StatsBase sẽ thực hiện thủ thuật, với lựa chọn của tùy chọn replace = false (ví dụ: lấy mẫu "mà không cần thay thế" có nghĩa là bạn xóa số khỏi nhóm kết quả có thể sau khi được chọn).

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