2010-10-17 32 views
5

Khi tôi chuyển ra làWinDefault với isWinConfidence, tôi nhận được kết quả khác nhau đáng kể. Tôi cảm thấy họ nên giống nhau. Có lỗi trong mã của tôi hay thuộc tính thống kê mà tôi đã hiểu nhầm?Mã xác suất Sự cố

Thử nghiệm này có nghĩa là để mô phỏng lật một đồng xu 1x và một đồng xu nhiều lần.

Câu hỏi đặt ra là

Nếu P (x) là 70% thì nên p (x) * 100 là> = 70 70% thời gian, không có?

Cảm ơn.

private void TestWin() 
    { 
     double headsUp = 0; 
     double testRuns = 100; 
     for (double i = 0; i < testRuns; i++) 
     { 
      if (IsWinConfidence()) 
      { 
       headsUp++; 
      } 

     } 
     label1.Text = "Probability of Heads is " + headsUp /testRuns; 

    } 

    private bool IsWinDefault() 
    { 
     if (r.NextDouble() <= .7) 
     { 
      return true; 
     } 
     return false; 
    } 

    private bool IsWinConfidence() 
    { 
     int headsCount = 0; 
     for (double x = 0; x < 100; x++) 
     { 
      if (IsWinDefault()) 
       headsCount++; 

     } 

     double pHeadsCount = headsCount/100d; 
     if (pHeadsCount >= .7) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 


    } 
+0

Bạn không bao giờ xác định những gì 'r' (như trong' r.NextDouble() ') là bất cứ nơi nào trong câu hỏi của bạn. – devuxer

+0

@DanM Nó chỉ là C# ngẫu nhiên Random r = new Random(); –

+0

+1 cho câu hỏi, điều này thực sự thú vị hơn một chút mà nó trông (tốt, với tôi nó là :-)), và không có lỗi trong mã của bạn như xa như tôi có thể nói. –

Trả lời

2

Dưới đây là câu trả lời đơn giản:

Một khả năng 70% có nghĩa là trung bình, 100 đồng xu flips sẽ sản xuất 70 người đứng đầu lên. Nó sẽ, tuy nhiên, đôi khi được hơn 70, và đôi khi ít hơn.

Nói cách khác, số lượng người đứng đầu lên, bạn sẽ nhận được cho mỗi lô 100 xu nhào lộn ngoạn mục, sẽ được gần gũi với 70. Đôi khi dưới 70, đôi khi trên 70, đôi khi chính xác 70.

Vì vậy, nếu số dao động khoảng 70, nó chỉ đứng lên lý do rằng nếu bạn đang hỏi "bao lâu nó sẽ đu trên 70, hoặc bằng 70", bạn sẽ nhận được một câu trả lời cho biết "khoảng 50% thời gian".

Vì vậy, bạn không hỏi đúng câu hỏi với mã của mình ở đó.

Trong thực tế, tăng số lượng trong vòng lặp của bạn trong IsWinConfidence một cái gì đó cao hơn nhiều mang đến cho bạn một số gần 50.


Hãy chọn ngoài lập luận của bạn ở đây.

Bạn đang nói rằng nếu bạn có:

Một xu thiên vị, mà 70% thời gian, sẽ hạ cánh với người đứng đầu lên, và 30% thời gian, với người đứng đầu xuống

Sau đó, bạn đang nói rằng:

Nếu tôi lật đồng xu 100 lần, tôi sẽ nhận được hơn 70 người đứng đầu lên

Một không dẫn đến sự khác, có một lỗ hổng trong các đối số của bạn ở đây. Xác suất không phải là về bảo đảm, đó là về trung bình.

Nếu xác suất là tuyệt đối, tuyên bố thứ hai của bạn nên là:

Nếu tôi lật đồng xu 100 lần, tôi sẽ nhận được 70 người đứng đầu lên

Thông báo thiếu "hơn" ở đây .

Thay vào đó, những gì các đối số đầu tiên có nghĩa là thế này:

Nếu tôi lật đồng xu 100 lần, sau đó lật nó hơn 100 lần, sau đó 100 lần, sau đó hơn 100 lần, và như vậy, sau đó trung bình mỗi 100 flips sẽ có 70 người đứng đầu lên

Bây giờ, tôi không biết đủ về tính toán xác suất để chọn ngoài vòng và đếm của bạn, nhưng tôi biết rằng chỉ sau logic, lập luận của bạn thất bại.

Hãy thử một cách tiếp cận khác.

Nếu đồng xu thậm chí còn, mặc dù thiên vị, nó có nghĩa là ra khỏi một đồng xu 100 flips, bạn đôi khi sẽ nhận được nhiều hơn 70, và đôi khi ít hơn 70.

Trong tâm trí ngây thơ của tôi, điều này có nghĩa là .. Trung bình, bạn sẽ chỉ nhận được hơn 70 đồng xu lật một nửa thời gian.

Bằng cách tăng số trong vòng lặp của bạn lên 100.000, tôi nhận được chức năng tin cậy để quay lại gần 50. Điều này có vẻ sao lưu lý thuyết của tôi.

Nhưng như tôi đã nói, cơ hội của tôi là một chuyên gia (hoặc thậm chí là người yêu) trong xác suất nhỏ hơn 0.

+0

+1 cho giải thích này, được viết rất rõ :). Có thể xem xét một kết luận cuối cùng cuối cùng để hoàn thành câu trả lời. Một cái gì đó như sửa chữa (pHeadsCount> = .7) ==> (pHeadsCount> = .5) và tăng N của bạn lên 10000 sẽ giải quyết vấn đề của bạn. – bastijn

+0

Điều này khá tốt. Một số đề cập đến phân phối khác nhau sẽ thêm một cái gì đó quá, tức là nhị thức, bình thường, vv Ngoài ra một cái gì đó về cách tỷ lệ cược giảm như chạy nhiều hơn được thực hiện, tức là từ 100 đến 1000 nó trở nên gần 50%. Tôi có thể yêu cầu điều này tại tràn số liệu thống kê để có được một xử lý tốt hơn trên đó. –

+0

Vâng, tốt, đọc câu cuối cùng của câu trả lời của tôi một lần nữa, đầy đủ :) –

0

Cập nhật:

Chức năng đầu tiên trả về true 70% thời gian để headsCount sẽ được bình đẳng, với xác suất rất cao, tới ~ 70 (nếu 100 được thay thế bằng một số lớn hơn nếu di chúc có xu hướng là 70% số đó).

Do đó

pHeadsCount >= .7 

có một xác suất, 50%, nhăn mặt giá trị sẽ được ~ 0,7.

+0

@Loic Tôi đang cố gắng mô phỏng lật một đồng xu không công bằng vài lần so với 1 lần. Không nên ra khỏi 100 flips chúng tôi có thể nhận được ít nhất 70 chiến thắng? Tôi chỉ nói không sao nếu chúng ta có ít nhất 70 chiến thắng hoặc tốt hơn, tôi đếm nó như một chiến thắng. –

+0

@Loic Xem Tôi đang chạy vòng lặp thứ hai 100 lần. Tôi nên nhận được 70% và tôi nói ổn nếu tôi nhận được 70% hoặc tốt hơn tôi đếm nó một chiến thắng, nó có ý nghĩa? –

+0

@Curtis White: Thật vậy. Tôi đã đọc quá nhanh. Bạn có kết quả gì khác biệt? Hai xác suất là gì? (thử cũng với 10.000 thay vì 100 và cho kết quả đó quá) –

0

if (r.NextDouble() <= .7)

vs

if (pHeadsCount >= .7)

1

Nếu P (x) là 70% thì nên p (x) * 100 được> = 70 70% thời gian, không có?

số Niềm tin không liên quan đến xác suất theo cách này ...

Những gì bạn đang làm là trong phương pháp thứ hai được tung một đồng xu thiên vị 100 lần và trở thành sự thật nếu bạn nhận được 70 hoặc nhiều đầu hơn. Khi bạn đã cố định đồng xu của mình sao cho trung bình sẽ cho bạn 70% thời gian bạn mong đợi để có được 70 người đứng trong số 100 tung "đôi khi", nhưng "đôi khi" đó không phải là 70% thời gian.

1

IsWinDefault "thắng" 70% thời gian, như mong đợi; IsWinConfidence "thắng" khoảng 53,77%, vì vậy bạn sẽ thấy các con số gần với điều đó. Xem binomial distribution để biết thêm.

+1

Có và nếu tổng số tăng này sẽ có xu hướng lên tới 50%. –

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