ความน่าจะเป็นที่เป็นอย่างไรจาก 25 ตัวเลขสุ่มระหว่าง 1 ถึง 100 ค่าสูงสุดจะปรากฏมากกว่าหนึ่งครั้ง


23

ในเกมออนไลน์หลายเกมเมื่อผู้เล่นทำภารกิจที่ยากบางครั้งรางวัลพิเศษจะมอบให้ทุกคนที่ทำงานให้สำเร็จสามารถใช้งานได้ โดยปกติจะเป็นเมานท์ (วิธีการขนส่ง) หรือรายการโต๊ะเครื่องแป้งอื่น (รายการที่ไม่ปรับปรุงประสิทธิภาพของตัวละคร

เมื่อได้รับรางวัลดังกล่าววิธีที่ใช้กันโดยทั่วไปมากที่สุดในการพิจารณาว่าใครได้รับรางวัลคือการใช้ตัวเลขสุ่ม เกมมักจะมีคำสั่งพิเศษที่สร้างแบบสุ่ม (น่าจะเป็นแบบสุ่มหลอกไม่เข้ารหัสลับแบบสุ่ม) จำนวนระหว่าง 1 ถึง 100 (บางครั้งผู้เล่นสามารถเลือกการแพร่กระจายอื่นได้ แต่ 100 เป็นเรื่องธรรมดาที่สุด) ผู้เล่นแต่ละคนใช้คำสั่งนี้ผู้เล่นทุกคนสามารถดูได้ว่าใครรีดอะไรและไอเท็มนั้นจะมอบให้กับคนที่ม้วนสูงสุด เกมส่วนใหญ่มีระบบในตัวซึ่งผู้เล่นเพียงแค่กดปุ่มและเมื่อทุกคนกดปุ่มเกมจะจัดการที่เหลือโดยอัตโนมัติ

บางครั้งผู้เล่นบางคนสร้างจำนวนสูงเท่ากันและไม่มีใครชนะ สิ่งนี้มักจะได้รับการแก้ไขโดยผู้เล่นที่สร้างหมายเลขใหม่จนกว่าจะมีจำนวนสูงสุดที่ไม่ซ้ำกัน

คำถามของฉันมีดังต่อไปนี้: สมมติตัวสร้างตัวเลขสุ่มซึ่งสามารถสร้างตัวเลขใด ๆ ระหว่าง 1 ถึง 100 ด้วยความน่าจะเป็นเดียวกัน สมมติว่าคุณมีกลุ่มผู้เล่น 25 คนซึ่งแต่ละคนสร้าง 1 หมายเลขด้วยตัวสร้างตัวเลขแบบสุ่ม (แต่ละอันมีเมล็ดของตัวเอง) คุณจะมี 25 ตัวเลขระหว่าง 1 ถึง 100 โดยไม่มีข้อ จำกัด เกี่ยวกับจำนวนผู้เล่นที่หมุนปุ่มเฉพาะและไม่มีความสัมพันธ์ระหว่างตัวเลข โอกาสที่จำนวนสูงสุดที่สร้างจะถูกสร้างโดยผู้เล่นมากกว่า 1 คนคืออะไร? กล่าวอีกนัยหนึ่งความน่าจะเป็นของเน็คไทคืออะไร?


7
World of Warcraft ใช่มั้ย
Behacad

1
ใช่มันเป็นแบบสุ่มตามที่ระบุไว้ในคำถาม (หมายเลขใด ๆ ระหว่าง 1 ถึง 100 รวมถึงมีความน่าจะเป็นเหมือนกัน)
Nzall

เป็นคำถามที่ดี แต่สิ่งนี้ทำให้ฉันเป็นวิธีที่ไม่ดีในการเลือกผู้ชนะ เพียงแสดงรายชื่อผู้เล่นในทางใดทางหนึ่ง (คุณสามารถพูดว่า "ตั้งชื่อตามตัวอักษร" หรือสับเปลี่ยนและแสดงรายการหรือเรียงลำดับอื่น ๆ ) แล้วเลือกหมายเลขสุ่มระหว่าง 1 ถึง 25 หมายเลขที่สอดคล้องกับผู้เล่นชนะ
Tim S.

2
ไม่ใช้ DKP!
Davor

2
คำแนะนำ: รับตัวอย่างที่สุ่มจากU { 1 , ... , 100 }เราต้องคำนวณP ( X ( 24 ) < X ( 25 ) )โดยใช้สิ่งที่เรารู้จากทฤษฎีของสถิติการสั่งซื้อ X1,,X25U{1,,100}P(X(24)<X(25))
เซน

คำตอบ:


25

ปล่อย

  • เป็นจุดสูงสุดของช่วงของคุณ, x = 100ในกรณีของคุณxx=100
  • เป็นจำนวนทั้งหมดเสมอ n = 25ในกรณีของคุณnn=25

ตัวเลขใด ๆจำนวนลำดับของnตัวเลขที่มีจำนวนในแต่ละลำดับy ที่เป็นY n ลำดับเหล่านี้จำนวนที่มีไม่มีYคือ( Y - 1 ) nและจำนวนที่มีหนึ่งปีเป็นn ( Y - 1 ) n - 1 ดังนั้นจำนวนของลำดับที่มีสองหรือมากกว่าy s คือ y n - ( y - 1 - nYxnYYnY(Y-1)nYn(Y-1)n-1Y จำนวนรวมของลำดับของตัวเลข n ที่มีจำนวนสูงสุด yที่มีอย่างน้อยสอง y s คือ x y = 1 ( y n - ( y - 1 ) n - n ( y - 1 ) n - 1

Yn-(Y-1)n-n(Y-1)n-1
nYY
ΣY=1x(Yn-(Y-1)n-n(Y-1)n-1)=ΣY=1xYn-ΣY=1x(Y-1)n-ΣY=1xn(Y-1)n-1=xn-nΣY=1x(Y-1)n-1=xn-nΣY=1x-1Yn-1

จำนวนรวมของลำดับเป็นเพียง n ลำดับทั้งหมดมีแนวโน้มเท่ากันดังนั้นความน่าจะเป็นคือ x n - n y = x - 1 y = 1 y n - 1xn

xn-nΣY=1Y=x-1Yn-1xn

ด้วยฉันสร้างความน่าจะเป็น 0.120004212454x=100,n=25

ฉันได้ทดสอบสิ่งนี้โดยใช้โปรแกรม Python ต่อไปนี้ซึ่งนับลำดับที่จับคู่ด้วยตนเอง (สำหรับต่ำ, 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

โปรแกรมนี้แสดงผล

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

2
2000000.11957

xn

ฉันจำลองการใช้ Perl และได้0.005 ที่สอดคล้องกันมาก pastebin.com/gb7JMLt6
agweber

xnx=20,n=515600/160000=0.0975x,nและความน่าจะเป็นจากสูตรที่ได้รับ ฉันอยากรู้ว่าแหล่งที่มาของความขัดแย้งระหว่างรหัสของเราคืออะไร
TooTone

4
1070.119983,n = 10^7; Total[Boole[Equal @@ (#[[Ordering[#, -2]]])] & /@ x = RandomInteger[{1, 100}, {n, 25}]] / n

3

ฉันจะพิจารณาหาโอกาสที่จะมีผู้ชนะที่ไม่ซ้ำกันก่อน

x(251)(x-1)2410025Y-1

ผู้ชนะสามารถชนะด้วยจำนวนของเขาเท่ากับ 2 ถึง 100 ดังนั้นความน่าจะเป็นรวมคือ

Σผม=210025(ผม-1)2410025=25Σผม=199ผม2410025=-14+25Σผม=1100ผม2410025-14+25124+110024+1+1210024+242161002310025=0.88

10023

1-0.88=0.12


-3

พี ) (ดูลิงค์ด้านบน) จากนั้นความน่าจะเป็นที่ทับซ้อนกันจำนวน 25 จำนวนนั้น1-พีโดยที่ p คือความน่าจะเป็นที่คุณคำนวณไปแล้ว ในกรณีนี้ความน่าจะเป็นที่เป็นไปได้ที่ 25 หมายเลขจะไม่ทับซ้อนกับค่าสูงสุดที่กำหนดโดย: พี=1* * * *(1-1/100)* * * *(1-1/100)......* * * *(1-1/10)=(1-1/100)24 ความน่าจะเป็นที่คุณต้องการคือ P=1-พี=1-(1-1/100)24=0.214


นี่หมายความว่าน่าจะเป็น 21.4% หรือไม่ ดูเหมือนจะค่อนข้างสูง แต่แล้วอีกครั้งวันเกิดความขัดแย้งมีคำตอบที่น่าแปลกใจที่คล้ายกัน ขอบคุณ
Nzall

6
-1 เนื่องจากคำตอบนี้ไม่ถูกต้อง @TooTone ให้คำตอบที่ถูกต้อง
COOLSerdash
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.