Xác suất mà từ 25 số ngẫu nhiên từ 1 đến 100, cao nhất xuất hiện nhiều hơn một lần là gì?


23

Trong nhiều trò chơi trực tuyến, khi người chơi hoàn thành một nhiệm vụ khó khăn, đôi khi một phần thưởng đặc biệt được trao mà mọi người hoàn thành nhiệm vụ đều có thể sử dụng. đây thường là thú cưỡi (phương thức vận chuyển) hoặc vật phẩm phù phiếm khác (vật phẩm không cải thiện hiệu suất của nhân vật và chủ yếu được sử dụng để tùy biến ngoại hình).

Khi phần thưởng như vậy được trao, cách phổ biến nhất để xác định ai sẽ nhận phần thưởng là thông qua các số ngẫu nhiên. Trò chơi thường có một lệnh đặc biệt tạo ra một số ngẫu nhiên (có thể là giả ngẫu nhiên, không phải là ngẫu nhiên an toàn tiền điện tử) trong khoảng từ 1 đến 100 (đôi khi người chơi có thể chọn một mức chênh lệch khác, nhưng 100 là phổ biến nhất). Mỗi người chơi sử dụng lệnh này, tất cả người chơi có thể xem ai đã lăn cái gì và vật phẩm được trao cho người lăn cao nhất. Hầu hết các trò chơi thậm chí có một hệ thống tích hợp trong đó người chơi chỉ cần nhấn một nút và một khi mọi người nhấn nút của họ, trò chơi sẽ tự động làm phần còn lại.

Đôi khi, một số người chơi tạo ra số lượng cao như nhau và không ai đánh bại họ. điều này thường được giải quyết bởi những người chơi tái tạo số của họ, cho đến khi có một số cao nhất.

Câu hỏi của tôi là như sau: Giả sử một trình tạo số ngẫu nhiên có thể tạo bất kỳ số nào trong khoảng từ 1 đến 100 với cùng một xác suất. Giả sử rằng bạn có một nhóm gồm 25 người chơi, mỗi người tạo 1 số với trình tạo số ngẫu nhiên như vậy (mỗi người có hạt giống riêng). Bạn sẽ có 25 số từ 1 đến 100, không có giới hạn về số lượng người chơi lăn một số tê cụ thể và không có mối quan hệ giữa các số. Cơ hội mà số lượng tạo cao nhất được tạo bởi nhiều hơn 1 người chơi là gì? Nói cách khác, khả năng của một chiếc cà vạt là gì?


7
Thế giới Warcraft hả?
Behacad

1
vâng, đó là thống nhất ngẫu nhiên, như đã nêu trong câu hỏi (bất kỳ số nào trong khoảng từ 1 đến 100 bao gồm có xác suất tương tự.
Nzall

Câu hỏi hay, nhưng điều này đánh tôi là một cách tồi để chọn một người chiến thắng. Chỉ cần liệt kê các cầu thủ theo một cách nào đó (bạn có thể nói, "đặt tên theo thứ tự abc" hoặc xáo trộn nó và hiển thị cho mọi người danh sách, hoặc sắp xếp một số cách khác) và chọn một số ngẫu nhiên trong khoảng từ 1 đến 25. Số tương ứng với người chơi sẽ thắng.
Tim S.

2
Không, sử dụng DKP!
Thưởng thức

2
Gợi ý: đã cho một mẫu ngẫu nhiên từ , chúng ta cần tính sử dụng những gì chúng ta biết từ lý thuyết thống kê đơn hàng. U { 1 , Mạnh , 100 } P ( X ( 24 ) < X ( 25 ) )X1,,X25U{1,,100}P(X(24)<X(25))
Zen

Câu trả lời:


25

Để cho

  • x = 100x là đầu cuối của phạm vi của bạn, trong trường hợp của bạn.x=100
  • n = 25n là tổng số lần rút, trong trường hợp của bạn.n=25

Với bất kỳ số nào , số dãy của số với mỗi số trong chuỗi là . Trong số các dãy này, số không chứa s là và số chứa một là . Do đó, số chuỗi có hai hoặc nhiều s là Tổng số chuỗi của số có số cao nhất chứa tại ít nhất hai s là n y y n y ( y - 1 ) n y n ( y - 1 ) n - 1 y y n - ( y - 1 ) n - n ( y - 1 ) n - 1 n y y x y = 1 ( y n - ( y - 1yxnyyny(y1)nyn(y1)n1y

yn(y1)nn(y1)n1
nyy
y=1x(yn(y1)nn(y1)n1)=y=1xyny=1x(y1)ny=1xn(y1)n1=xnny=1x(y1)n1=xnny=1x1yn1

Tổng số chuỗi chỉ đơn giản là . Tất cả các chuỗi đều có khả năng như nhau và vì vậy xác suất là xn

xnny=1y=x1yn1xn

Với tôi đưa ra xác suất 0.120004212454.x=100,n=25

Tôi đã thử nghiệm điều này bằng chương trình Python sau, tính các chuỗi khớp thủ công (đối với thấp ), mô phỏng và tính toán bằng công thức trên.x,n

import itertools
import numpy.random as np

def countinlist(x, n):
    count = 0
    total = 0
    for perm in itertools.product(range(1, x+1), repeat=n):
        total += 1
        if perm.count(max(perm)) > 1:
            count += 1

    print "Counting: x", x, "n", n, "total", total, "count", count

def simulate(x,n,N):
    count = 0
    for i in range(N):
        perm = np.randint(x, size=n)
        m = max(perm)
        if sum(perm==m) > 1:
            count += 1
    print "Simulation: x", x, "n", n, "total", N, "count", count, "prob", count/float(N)

x=100
n=25
N = 1000000 # number of trials in simulation

#countinlist(x,n) # only call this for reasonably small x and n!!!!
simulate(x,n,N)
formula = x**n - n*sum([i**(n-1) for i in range(x)])
print "Formula count", formula, "out of", x**n, "probability", float(formula) / x**n

Chương trình này xuất ra

Simulation: x 100 n 25 total 1000000 count 120071 prob 0.120071
Formula count 12000421245360277498241319178764675560017783666750 out of 100000000000000000000000000000000000000000000000000 probability 0.120004212454

2
+1 Một mô phỏng ngắn trong R tương thích với kết quả này. Sau mô phỏng, tôi đã có ước tính là . 2000000.11957
COOLSerdash

@COOLSerdash Thật là một lời cảm ơn tuyệt vời. Tôi đã kiểm tra công thức của mình bằng cách liệt kê tất cả các hoán vị trước khi đăng (tôi sẽ liệt kê chương trình python trong một phút), trên các giá trị nhỏ của và , nhưng tôi không nghĩ sẽ mô phỏng câu hỏi thực tế được hỏi. xn
TooTone

Tôi mô phỏng bằng cách sử dụng perl và có 0,005 rất phù hợp. pastebin.com/gb7JMLt6
agweber

@agweber Cảm ơn bạn đã viết và chạy mô phỏng của bạn. Tôi không phải là lập trình viên Perl nên tôi không thể nhận xét về các chi tiết của chương trình của bạn ở mức độ cao có vẻ như âm thanh. Bạn đã kiểm tra mã mô phỏng của mình với các xác suất đã biết, dễ tạo ra chỉ bằng cách đếm thấp và ? Ví dụ , xác suất chính xác là . Tôi cũng đã tăng cường chương trình Python của mình bằng mã mô phỏng, đồng ý với xác suất chính xác cho thấp và xác suất từ ​​công thức tôi nhận được. Tôi tò mò muốn biết nguồn gốc của sự bất đồng giữa mã của chúng tôi là gì. xnx=20,n=515600/160000=0.0975x,n
TooTone

4
Một Mathematica mô phỏng với lặp sản xuất mà có khả năng là đúng qua bốn chữ số đầu tiên. Mã này là1070.119983,n = 10^7; Total[Boole[Equal @@ (#[[Ordering[#, -2]]])] & /@ x = RandomInteger[{1, 100}, {n, 25}]] / n
whuber

3

Tôi sẽ cân nhắc để tìm xác suất có một người chiến thắng duy nhất trước tiên

Xác suất có một người chiến thắng duy nhất và số của anh ta là bằng với vì có 25 lựa chọn cho người chiến thắng và còn lại có thể có số từ 1 đếnx(251)(x1)2410025y1

Người chiến thắng có thể giành chiến thắng với số của mình bằng 2 đến 100 nên tổng xác suất là

i=210025(i1)2410025=25i=199i2410025=14+25i=1100i241002514+25124+110024+1+1210024+242161002310025=0.88

Ở đây tôi đã sử dụng xấp xỉ lên tới để tham khảo: https://en.wikipedia.org/wiki/Faulhaber 's_formula10023

Do đó xác suất có cà vạt là10.88=0.12


-3

Có vẻ như một câu hỏi rất giống với nghịch lý Sinh nhật ( http://en.wikipedia.org/wiki/BISS_probols ), sự khác biệt duy nhất là trong trường hợp này bạn không muốn khớp bất kỳ số nào mà chỉ là số cao nhất. Bước đầu tiên trong tính toán tính xác suất không phải là số ngẫu nhiên trùng nhau ( ). (xem liên kết ở trên) và sau đó xác suất một số trong 25 số trùng nhau là trong đó p là xác suất bạn đã tính. Trong trường hợp này, xác suất 25 số không trùng với mức tối đa được đưa ra bởi: thì xác suất bạn đang tìm kiếm là1 - p p = 1 * ( 1 - 1 / 100 ) * ( 1 - 1 / 100 ) . . . . . . * ( 1 - 1 / 10 ) = ( 1 - 1 / 100 ) 24 P = 1 - p = 1 - ( 1 - 1 / 100p1pp=1(11/100)(11/100)......(11/10)=(11/100)24P=1p=1(11/100)24=0.214


điều này có nghĩa là xác suất là 21,4%? Có vẻ khá cao, nhưng một lần nữa, nghịch lý sinh nhật lại có một câu trả lời đáng ngạc nhiên tương tự. cảm ơn.
Nzall

6
-1 Vì nó đứng, câu trả lời này là không chính xác. Câu trả lời đúng được cung cấp bởi @TooTone.
COOLSerdash
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.