2013-02-11 25 views
7

Tôi đang cố mô phỏng hai con xúc xắc. Tôi đã sử dụng:mô phỏng hai con xúc xắc

d2 <- sample(1:6, 10^6, replace = T) + sample(1:6, 10^6, replace = T) 

và nhận kết quả mong đợi. Tôi cũng đã thử

s2d <- c() 
for (i in 1:6) { 
    for (j in 1:6){ 
    s2d <- c(s2d, (i+j)) 
    } 
} 
d2 <- sample(s2d, 10^6, replace=T) 

và điều đó cũng hoạt động, nhưng chúng cảm thấy một chút "lực lượng vũ phu". Có cách nào dễ dàng hơn, thanh lịch hơn để làm điều đó không?

Nói chung, có một hàm có 2 (hoặc nhiều) sự kiện độc lập và thực hiện các thao tác trên chúng (bổ sung, nhân) không?

+4

Giải pháp đầu tiên có vẻ như bạo lực hoặc không phù hợp? Đó là giải pháp 1 dòng. Là vấn đề của bạn mà bạn không thể cuộn một con xúc xắc tùy ý? –

+0

Giải pháp đầu tiên là đủ đơn giản, nhưng tôi đã tự hỏi nếu có một chức năng mà có hai sự kiện độc lập và không bổ sung (hoặc, thậm chí, nhân cho chuỗi xác suất có điều kiện). – koenbro

+0

Lưu ý rằng hàm xác suất của kết quả của việc thêm * giá trị * của hai biến riêng biệt ngẫu nhiên không phải là tổng, mà là sự kết hợp của các hàm xác suất. Có phải bạn sau những cách để làm chập chững? Điều thứ hai, nơi bạn nhân * xác suất *, không phải * giá trị * hoàn toàn là một loại điều khác. –

Trả lời

12

Nếu vấn đề của bạn là bạn không thể cuộn bất kỳ số lượng tùy ý các con xúc xắc, một cái gì đó như:

rowSums(replicate(2, sample(6, 10^6, replace=T))) 

sẽ được linh hoạt hơn.

+0

Cảm ơn bạn, điều này cho phép một số xúc xắc tùy ý. – koenbro

2

Tôi đồng ý với David rằng dường như không có gì đặc biệt sai với tùy chọn đầu tiên của bạn. Một cách khác để đi có thể này, nếu bạn thực sự ngay sau khi tổng của hai con xúc xắc:

sample(2:12,size = 100,replace = TRUE, prob = table(outer(1:6,1:6,"+"))/36) 
2

Có một chức năng dice trong gói TeachingDemos rằng mô phỏng việc tung xúc xắc (và thậm chí còn có một là tùy chọn để vẽ kết quả, nhưng 1000 cuộn sẽ không tạo ra một cốt truyện có ý nghĩa). Điều này có vẻ hơi ít vũ lực, nhưng nội bộ nó tương tự như những gì đã được đăng. Bạn có thể sử dụng các hàm áp dụng hoặc có liên quan để thực hiện những việc như tổng hợp trên các cột của sự trở lại.