วิธีการจำลองการตายให้เหรียญยุติธรรม


21

สมมติว่าคุณได้รับเหรียญที่ยุติธรรมและคุณต้องการจำลองการแจกแจงความน่าจะเป็นของการโยนเหรียญตาย (หกด้าน) ซ้ำ ๆ ความคิดแรกของฉันคือการที่เราต้องเลือกที่เหมาะสมจำนวนเต็มเช่นว่า6m ดังนั้นหลังจากที่พลิกเหรียญครั้งที่เรา map จำนวนเข้ารหัสโดย K-ยาว bitstring เพื่อผลของการตายโดยการหารช่วงเป็น 6 ช่วงเวลาที่แต่ละความยาวเมตรอย่างไรก็ตามสิ่งนี้เป็นไปไม่ได้เนื่องจากมีสองสิ่งเป็นเพียงปัจจัยหลักเท่านั้น แต่ปัจจัยสำคัญของรวมถึงสาม ควรมีวิธีง่าย ๆ ในการทำเช่นนี้ใช่มั้ย2 k = 6 m k [ 0 , 2 k - 1 ] m 2 k 6 mk,m2k=6mk[0,2k1]m2k6m


ดูคำถามนี้ในกรณีที่มีการแก้ไขปัญหาโดยทั่วไป
Raphael

ที่นี่บทความเกี่ยวกับเรื่องนี้ มันอธิบายวิธีการใช้การสุ่มตัวอย่างการปฏิเสธและวิธีการใช้บิต "ที่สูญเปล่า" เพื่อเพิ่มความเร็วในการหมุนต่อไป
ZeroUltimax

คำตอบ:


12

จะมีวิธีการที่มีประสิทธิภาพเล็กน้อยมากกว่าหนึ่งชี้ให้เห็นโดย @FrankW แต่การใช้ความคิดเดียวกันคุณสามารถพลิกเหรียญของคุณครั้งเพื่อให้ได้ตัวเลขด้านล่าง n จากนั้นตีความว่าสิ่งนี้เป็นกลุ่มของตายพลิกโดยที่เป็นจำนวนมากที่สุดเพื่อให้ (ดังที่ได้กล่าวไปแล้วความเท่าเทียมไม่เคยถือที่นี่) ถ้าคุณได้รับมากกว่าจำนวนหรือเท่ากับคุณต้องปฏิเสธคุณค่าและทำซ้ำทั้งหมดพลิก2 n m m 6 m < 2 n 6 m nn2nmm6m<2n6mn

คุณสามารถใช้ฟังก์ชั่นที่คืนค่าการพลิกดายเพียงครั้งเดียวโดยการหมุนเหรียญแล้วทำการแคชผลลัพธ์สำหรับการร้องขอการพลิกดายต่อไปนี้m - 1nm1

สิ่งที่น่าสนใจคือคุณค่าของดีกว่าค่าอื่นเนื่องจากมีอัตราการปฏิเสธน้อยกว่า นี่คือรายการของค่าที่ดี (เช่นค่าที่มีอัตราการปฏิเสธต่ำกว่าค่าก่อนหน้า):n

n m r
3 1 0.25
8 3 0.15625
13 5 0.05078125
44 17 0.0378308072686
75 29 0.0247036782182
106 41 0.0113974522704
243 94 0.00933096248381
380 147 0.00726015308463
517 200 0.00518501504347
654 253 0.00310553931213
791 306 0.00102171682348

ได้มาพร้อมกับสูตร: n

m=nlog32r=13m2n

แถวแรกสอดคล้องกับคำตอบของ @FrankW ด้วยอัตราการปฏิเสธ 25% ตัวเลขต่อไปนี้เป็นสิ่งที่ดี: และn = 13สามารถเก็บไว้ในตัวแปรสแตติกจำนวนเต็มเดียว โดยเฉพาะอย่างยิ่งอัตราการปฏิเสธของn = 13เป็นเพียง 5% ซึ่งเป็นการปรับปรุงที่สมเหตุสมผลเมื่อเทียบกับ 25% และทำให้สิ่งนี้เป็นตัวเลือกที่ดีสำหรับการนำไปใช้ที่เป็นไปได้n=8n=13n=13


คุณไม่ต้องการ 6 ^ m, 6 * m ก็เพียงพอแล้ว ดังนั้นคุณสามารถใช้ 5 throws เพื่อรับหมายเลข 5 bit ปฏิเสธเพียง 1/16 คดี
Taemyr

อัตราการปฏิเสธ 5% สำหรับการโยน 13 ครั้งนั้นแย่มากเมื่อเทียบกับ 25% สำหรับการทอย 3 ครั้ง เนื่องจาก 25% สำหรับการทอย 3 ครั้งจะปฏิเสธเพียง 4 ครั้งเท่านั้น (เช่นใช้จ่ายมากกว่า 12 tosses) ใน 0.390625% ของกรณี
Taemyr

@Taemyr หมายเลข 5 บิตสามารถแทนค่าที่แตกต่างกัน 32 ค่าซึ่งอนุญาตให้คุณแทนลูกเต๋าเดียว (เนื่องจากลูกเต๋าสองลูกมีความเป็นไปได้ 36 อย่าง) ดังนั้นมีค่า 6/32 เท่านั้นที่ยอมรับได้ด้วยอัตราการปฏิเสธ 27/32 = 84%
Emanuele Paolini

@Taemyr: อัตราการปฏิเสธบนnกลมๆหมายถึงว่าในเฉลี่ยชุดของทุกnกลมๆได้รับการปฏิเสธด้วยความน่าจะเป็นR โดยเฉลี่ยแล้วการโยนแต่ละครั้งจะถูกปฏิเสธด้วยอัตราเดียวกันr (ไม่ขึ้นอยู่กับn ) rnnrrn
Emanuele Paolini

ใช่. และเมื่อใช้วิธีของ FrankW ที่มีอัตราการตีพิมพ์ใหม่ 25% สำหรับชุดที่ 3 ของการโยนคุณจะมีโอกาสที่จะเป็น 1-0.00390625 ในการยอมรับไม่ช้ากว่าชุดที่ 4
Taemyr

29

สิ่งที่คุณสามารถทำได้คือใช้วิธีที่เรียกว่าการสุ่มตัวอย่างการปฏิเสธ :

  • พลิกเหรียญ 3 ครั้งและตีความแต่ละครั้งว่าเป็นบิต (0 หรือ 1)
  • Concatenate 3 บิตให้เลขฐานสองใน ][0,7]
  • หากตัวเลขอยู่ในให้ถือเป็นดายโรล[1,6]
  • มิฉะนั้นเช่นถ้าผลลัพธ์เป็นหรือ7ให้ทำซ้ำ flips07

ตั้งแต่ของผลลัพธ์ที่เป็นไปได้นำไปสู่การยกเลิกในแต่ละชุดความน่าจะเป็นที่จะต้องพลิกมากกว่าlเซตเพื่อให้ม้วนฟิล์มตายคือ(1-668lลิตร ดังนั้นวิธีนี้มีประสิทธิภาพในทางปฏิบัติ(168)l=14l

การปรับปรุง:

@ คำตอบของแองเจิลชี้ให้เห็นว่าจำนวนเหรียญพลิกในแต่ละชุด แต่สามารถลดได้ครั้งแรกจาก 3 เหลือ 2 โดยใช้ความแตกต่างระหว่างและ7เป็นบิตแรกสำหรับชุดถัดไป07

@Emanuele Paoliniอธิบายถึงวิธีที่คุณสามารถลดจำนวนของ rerolls ได้อย่างไรถ้าคุณต้องการมิกซ์โรลจำนวนมาก


วิธีนี้จะไม่ให้แนวโน้มกลางที่ยิ่งใหญ่กว่าที่เป็นจริง d6 หรือไม่?
Red_Shadow

3
@ Red_Shadow No. โปรดทราบว่าคุณไม่ได้เพิ่มการโยนเหรียญ (สามอันนั้นคงไม่เพียงพอ) แต่คุณเลือกบิตเป็นเลขฐานสอง - bitแต่ละเหรียญ ดังนั้นคุณสุ่มตัวอย่างจาก[ 0..2 k - 1 ]และปฏิเสธตัวเลขที่ไม่ได้มาจากช่วงเวลาเป้าหมาย สิ่งนี้สามารถให้ผลการกระจายที่สม่ำเสมอในช่วงเวลาเป้าหมาย k[0..2k1]
Raphael

หากคุณมีฝีมือกับช่วงที่ถูกปฏิเสธจริงๆแล้วมันง่ายในกรณีนี้ที่จะใช้เพื่อลดจำนวนการโยนเหรียญที่จำเป็นในกรณีการปฏิเสธ
Mooing Duck

@MooingDuck คุณสามารถตัดสินใจได้ว่าจะทิ้งผลหลังจาก 2 ทอย: ถ้ามันคือ 0,0 0,1 หรือ 1,0 แล้วโยนอีกครั้งสำหรับบิตสุดท้ายมิฉะนั้นเริ่มใหม่
ratchet freak

1
@NikosM ความน่าจะเป็นที่จะใช้เวลานานกว่าขั้นตอนลดลงเป็นศูนย์ชี้แจงแทนดังนั้นคำตอบที่ทำให้ไม่เรียกร้องผิด: มันมีประสิทธิภาพในทางปฏิบัติและในความเป็นจริงใช้กันอย่างแพร่หลาย (สำหรับการแจกแจงที่ซับซ้อนมากขึ้นมักเป็นวิธีการเดียวเท่านั้นที่รู้ทั้งหมด)k
Raphael

7

อีกทางเลือกหนึ่งในการปฏิเสธการสุ่มตัวอย่าง (ดังอธิบายในคำตอบของ FrankW ) คือการใช้อัลกอริธึมการปรับสเกลซึ่งคำนึงถึงคำตอบของ [7,8] ราวกับว่ามันเป็นการพลิกเหรียญอีกครั้ง

มีคำอธิบายอย่างละเอียดที่mathforum.orgรวมถึงอัลกอริทึม (มันNextBit()จะพลิกเหรียญที่เป็นธรรมของคุณ)

กรณีการโยนลูกเต๋าด้วยเหรียญที่ยุติธรรม (การสุ่มตัวอย่าง 2 → 6) นั้นง่ายกว่าอัลกอริทึมทั่วไป คุณเพิ่งจะล้มเหลว (7 หรือ 8) เพื่อป้อนเหรียญอีกครั้งและทำการโยนอีกสองครั้ง


2

อีกวิธีหนึ่งในการจำลองการหมุนของ dN โดยใช้ dM (ในกรณีของคำถามเฉพาะที่ถามว่า d6 โดยใช้ d2) คือการแบ่งช่วง [0, 1) ลงในช่วง N เท่ากับความยาว 1 / N, [0, 1 / N), [1 / N, 2 / N), ... , [(N-1) / N, N)

ใช้ dM เพื่อสร้างเศษส่วนฐาน -M, 0.bbbb ... , ใน [0, 1) หากสิ่งนั้นอยู่ใน [(i-1) / N, i / N) ให้ถือว่า i เป็นม้วนของ dN โปรดทราบว่าคุณจะต้องสร้างตัวเลขฐาน -M ให้เพียงพอเพื่อกำหนดช่วงเวลาที่อยู่ในนั้น


เงื่อนไขการเลิกจ้างจะต้องทำให้แม่นยำยิ่งขึ้น หากฉันพลิกเหรียญเมื่อฉันจบด้วยเศษส่วนไบนารี 0.0 หรือ 0.1 (เช่น½) ทั้งคู่ตกอยู่ในช่วงเวลา (ตรงกับ 0 และ 3 ตามลำดับในกรณีนี้) คุณต้องคำนึงถึงเศษส่วนที่สร้างขึ้นเป็นช่วงและคุณหยุดเมื่อช่วงทั้งหมดอยู่ในช่วงเวลาเดียว ฉันแน่ใจว่านั่นคือสิ่งที่คุณตั้งใจ แต่ฉันไม่คิดว่าชัดเจน
rici

1

คำอธิบายที่ง่ายขึ้นของการสุ่มตัวอย่างการปฏิเสธที่ดีขึ้น

ฉันกำลังให้คำอธิบายนี้เพราะหวังว่าจะช่วยให้เข้าใจหรือวิเคราะห์ความน่าจะเป็นได้ง่ายขึ้นในบางสถานการณ์

FrankW แนะนำให้ใช้การสุ่มตัวอย่างการปฏิเสธการพลิกเหรียญสามครั้งรักษาผลลัพธ์หากอยู่ในระยะที่เหมาะสมหรือการทำซ้ำการพลิกสามครั้งเป็นอย่างอื่นจนกว่าจะประสบความสำเร็จ

แองเจิลแนะนำให้บันทึกการพลิกหนึ่งครั้งในการทดลองแต่ละครั้งแทนที่ด้วยตัวเลือกไบนารีที่เหลืออยู่จากค่าที่ไม่ได้ใช้สองค่าของชุดที่สามก่อนหน้านี้

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

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

สิ่งนี้สามารถทำได้อย่างน้อยสองวิธีหรือมากกว่านั้นอย่างแม่นยำในการตีความสองครั้งที่แตกต่างกันของการโยน อาจมีคนอื่น

การจัดกลุ่มผลลัพธ์เป็นคู่

แนวคิดนี้จะพิจารณาเฉพาะค่าสามค่า (1,2), (3,4) และ (5,6) ที่แสดงโดยการกำหนดค่าแบบพลิกสองครั้งใด ๆ สามประเภทคือ TT, TH, HT จากนั้นคุณสามารถใช้การสุ่มตัวอย่างการปฏิเสธด้วยการปัดสองครั้งซ้ำได้ทุกเมื่อที่คุณได้รับการกำหนดค่าความล้มเหลว HH

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

การตรวจจับความล้มเหลวในการพลิกตั้งค่าล่วงหน้า

ความคิดคือการใช้การอ่านที่แตกต่างกันเล็กน้อยของการกำหนดค่าสามฟลิป หากตีความส่วนหัวและส่วนท้ายเป็น 1 และ 0 ดังนั้นการกำหนดค่าควรสอดคล้องกับการตีความแบบไบนารีบวกหนึ่งรายการ นั่นคือ TTT (เช่น 000) ตรงกับ 1, HTH (เช่น 101) ตรงกับ 6, HHT (เช่น 110) และ HHH (เช่น 111) ตรงกับ 7 และ 8 หรืออะไรก็ตามที่อยู่นอก [1,6]

จากนั้นเราก็รู้ว่าชุดพลิกกำลังประสบความสำเร็จหรือล้มเหลวเพียงแค่พลิกสองครั้งแรกเท่านั้น หากพวกเขาสร้าง HH ชุดพลิกจะล้มเหลวอย่างอิสระจากการพลิกครั้งล่าสุด ดังนั้นจึงสามารถข้ามได้

ฉันคิดว่าการตรวจจับเร็วสามารถใช้เป็นคำอธิบายได้เสมอ แต่ขึ้นอยู่กับจำนวนใบหน้าบนลูกเต๋าจำลองของคุณการตรวจจับความล้มเหลวอาจเกิดขึ้นหลังจากจำนวนตัวแปรพลิก

ตัวอย่างเช่นสำหรับลูกเต๋า 10 หน้าคุณจำเป็นต้องมีชุดการพลิก 4 ครั้งโดยมี 6 การกำหนดค่าที่สอดคล้องกับความล้มเหลว เคล็ดลับคือการกำหนดค่าความล้มเหลวทั้งหมดที่ส่วนท้ายสุดของลำดับของค่าไบนารีดังต่อไปนี้:

TTTT  0000   1
HTTT  1000   9
HTTH  1001  10
HTHT  1001  11
HTHH  1011  12
HHTT  1100  13
HHHH  1111  16

การกำหนดค่าที่ประสบความสำเร็จสอดคล้องกับช่วง [1, 10] และความล้มเหลวในช่วง [11,16]

จากนั้นคุณจะล้มเหลวเมื่อการโยนครั้งแรกสองครั้งให้ HH หรือเมื่อสามครั้งแรกให้ HTH ​​โดยไม่ต้องลองพลิกที่หายไปของเซต

หากคุณไม่ล้มเหลวคุณเพียงยกเลิกชุดการโยน


1

มีสองวิธีที่รู้จักกันดีในการนี้ หนึ่งคือ "การสุ่มตัวอย่างการปฏิเสธ" ตัวอย่างเช่นใช้สามบิตเพื่อเลือกหนึ่งในหกค่าลองอีกครั้งสำหรับสองตัวอย่างเพิ่มเติม หรือใช้ 14 บิต (8192 ค่า) เพื่อเลือก 5 ค่าจาก 1 ถึง 6 (ความเป็นไปได้ 7776) ลองอีกครั้งใน 13 กรณีจาก 256 กรณี

อีกอันใช้การคลายการบีบอัดของอัลกอริธึมการบีบอัด / คลายการบีบอัด: ด้วยการเข้ารหัสทางคณิตศาสตร์ลำดับของค่าสุ่มจาก 1 ถึง 6 สามารถบีบอัดได้โดยแทบจะไม่มีการซ้ำซ้อน สร้างลำดับการบีบอัดโดยการสุ่มและขยาย มีความซับซ้อนมากขึ้น แต่ในทางปฏิบัติจะไม่ต้องการตัวเลขสุ่มเพิ่มเติม


0

ขออภัยล่วงหน้าหากคำอธิบายนั้นไม่จำเป็น ฉันไม่แน่ใจว่าต้องเข้าใจรายละเอียดมากน้อยเพียงใดหรือแนวคิดง่ายแค่ไหนที่จะเข้าใจ

สมมติว่าคุณมีสามเหรียญ (เหรียญยุติธรรม) หากคุณกำหนดค่าเพิ่มเติมแต่ละด้านของแต่ละเหรียญคุณจะมีหกค่า

เช่นเดียวกับ: บนเหรียญแรกหัวคือ 1 และก้อยคือ 2 บนเหรียญที่สองหัวคือ 3 และก้อยคือ 4 บนเหรียญที่สามหัวคือ 5 และก้อยคือ 6

การโยนเหรียญจะทำให้คุณมีชุดของตัวเลขสามชุดซึ่งเป็นชุดปัจจุบันของคุณ ตอนนี้ชุดปัจจุบันของคุณจะกลายเป็นชุดก่อนหน้าของคุณและคุณจะทำซ้ำกระบวนการเพื่อรับชุดตัวเลขสามตัวใหม่

ทำต่อไปจนกว่าจะถึงหนึ่งและเพียงหนึ่งหมายเลขที่ตรงกันจากชุดปัจจุบันของคุณไปก่อนหน้านี้ นั่นคือหมายเลขของคุณ

ดังนั้นถ้าคุณได้ [หัวก้อยหัว] สำหรับชุดปัจจุบันนั่นก็คือ [1, 4, 5] ตอนนี้คุณพลิกมันอีกครั้งและชุดปัจจุบันของคุณคือ [2, 4, 5] สองแมทช์ ไม่ดี. ลองอีกครั้ง. คุณได้รับ [2, 3, 6] นัดเดียวเท่านั้น หมายเลขของคุณคือสอง

จะมีโอกาสเท่ากันที่หมายเลขที่ให้จะปรากฏ แต่ไม่คุ้มค่าโดยเฉพาะเนื่องจากมีการเปลี่ยนแปลง 3/32 เท่านั้นที่คู่ชุดใดชุดหนึ่งจะประสบความสำเร็จ (การแข่งขันเพียงครั้งเดียวเท่านั้น) ดังนั้นโดยเฉลี่ยอัลกอริทึมจะต้องทำซ้ำประมาณสิบครั้ง ยิ่งไปกว่านั้นมันไม่ใช่เรื่องง่ายที่จะอนุมานได้ง่ายไปเป็นเลขคี่

อย่างน้อยที่สุดบางทีมันอาจเป็นอาหารสำหรับความคิด คำถามที่น่าสนใจมาก


4
lognn12n2n/2n

0

ฉันจะพลิกเหรียญสามครั้งและตีความผลลัพธ์เป็นเลขฐานสองโดยปฏิเสธผลลัพธ์จากระยะ

ตัวอย่างเช่นปล่อยให้หัวเป็น 1 และก้อยเป็น 0 หากคุณพลิกมันสามครั้งและรับหัวก้อยหัวคุณจะมีเลขฐานสอง 101 ซึ่งเป็น 5 ในรูปทศนิยม HHT = 110b = 6. TTT = 000b = 0 และ HHH = 111b = 7 ซึ่งทั้งคู่อยู่นอกระยะและจะถูกปฏิเสธและคุณจะ reflip สำหรับตัวเลขทั้งหมด


1
นั่นเป็นเพียงคำตอบของแฟรงค์
Raphael

2
@ ราฟาเอลที่จริงแล้วเซตย่อยที่เข้มงวดของคำตอบของแฟรงค์เพราะแฟรงค์ตอบสนองเวลาที่คาดหวังไว้
David Richerby

0

น่าเสียดายที่คนเราไม่สามารถจำลองการตายโดยใช้เหรียญยุติธรรมได้

62

แต่เราสามารถทำสิ่งนี้ได้ด้วย "เหรียญสามใบ" ที่ยุติธรรม (ถ้าใช้คำเช่นนี้ได้) ความหมายเหรียญที่มี 3 ผลลัพธ์ และเหรียญ 2 เหรียญธรรมดาดังนั้นพื้นที่ร่วมของเหรียญทั้งสองนี้จึงตรงกับพื้นที่จัดกิจกรรมของผู้ตาย

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

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


ความคิดเห็นไม่ได้มีไว้สำหรับการอภิปรายเพิ่มเติม การสนทนานี้ได้รับการย้ายไปแชท
Gilles 'หยุดความชั่วร้าย' ใน

@Gilles คะแนนโหวตติดลบแย่เกินไปยังคงอยู่ที่นี่แม้จะมีคำอธิบายและการสนทนาทั้งหมด (ตามความถูกต้อง) ที่ดำเนินการต่อไป: p
Nikos M.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.