कार्ड के दो डेक के बीच सहसंबंध?


11

मैंने एक ओवरहैंड कार्ड फेरबदल करने के लिए एक कार्यक्रम लिखा है ।

प्रत्येक कार्ड को क्रमांकित किया गया है, जिसमें से सूट जा रहा है CLUBS, DIAMONDS, HEARTS, SPADESऔर रैंक दो से दस तक जैक, क्वीन, किंग और ऐस। इस प्रकार दो क्लबों की संख्या 1 है, तीनों क्लबों का एक 2 .... ऐस ऑफ क्लब 13 है ... ऐस ऑफ स्पेड्स 52 है।

यह निर्धारित करने के तरीकों में से एक है कि कार्डों को कैसे फेरबदल किया जाता है, इसकी तुलना एक अनशेडल्ड कार्ड से करें और देखें कि क्या कार्ड्स का क्रम सहसंबद्ध है।

यह है कि, मेरे पास इन कार्डों की तुलना के लिए अनफ़िल्टर्ड कार्ड हो सकते हैं:

Unshuffled          Shuffled            Unshuffled number   Shuffled number
Two of Clubs        Three of Clubs      1                   2
Three of Clubs      Two of Clubs        2                   1
Four of Clubs       Five of Clubs       3                   4
Five of Clubs       Four of Clubs       4                   3

पियर्सन विधि द्वारा सहसंबंध होगा: 0.6

कार्ड के एक बड़े सेट (सभी 52) के साथ आप पैटर्न को उभर कर देख सकते हैं। मेरी परिकल्पना यह है कि अधिक फेरबदल के बाद आपको कम सहसंबंध मिलेगा।

हालांकि, सहसंबंध को मापने के बहुत सारे तरीके हैं।

मैंने पियरसन के सहसंबंध में अपना हाथ आज़माया है, लेकिन मुझे यकीन नहीं है कि यह इस स्थिति में उपयोग करने के लिए सही सहसंबंध है।

क्या यह एक उपयुक्त सहसंबंध उपाय है? क्या अधिक अनुकूल उपाय है?

बोनस अंक मैं कभी-कभी अपने परिणामों में इस प्रकार का डेटा देखता हूं:

नमूना कार्ड सहसंबंध

स्पष्ट रूप से कुछ सहसंबंध है, लेकिन मुझे नहीं पता कि आप अलग 'ट्रेंडलाइन' को कैसे मापते हैं?


हमें यह समझने में मदद करने के लिए कि आप क्या चाहते हैं, शायद आप इसके बारे में थोड़ा और सटीक हो सकते हैं कि आपके द्वारा "कार्ड के क्रम को सहसंबद्ध किया गया है"।
whuber

@ देखें, मुझे लगता है कि ओपी का मतलब है किसी दिए गए कार्ड की स्थिति को फेरबदल से पहले और उसके बाद। उदाहरण के लिए, दिल का इक्का पहले से 8 वें और बाद में 8 वें स्थान पर रहा होगा।
गुंग - को पुनः स्थापित मोनिका

मुझे आश्चर्य है कि अगर "ओवरहैंड फेरबदल" से आपका मतलब है कि विकिपीडिया "राइफल फेरबदल" को क्या कहता है?
गूँग - मोनिका

1
@ आप जिस विकिपीडिया पृष्ठ से जुड़े हैं, उसमें "राइफल फेरबदल" और "ओवरहैंड फेरबदल" दोनों की प्रविष्टियाँ हैं, ओपी के बारे में बात कर रहा था। इसके लिंक को पढ़ने के लिए अच्छा है :)
bdeonovic

1
@Pureferret उस मामले में, मैं पुनः पुष्टि करूँगा। आपको रैंक सहसंबंध उपायों की गणना करनी चाहिए
तक्षकवार्ती

जवाबों:


14

आप आसन्न कार्ड के सभी जोड़े के बीच अंकित मूल्य में अंतर के शैनन एन्ट्रापी का उपयोग करके सहसंबंध के सापेक्ष स्तर (या अधिक सटीक, यादृच्छिकता के बढ़ते स्तर) को माप सकते हैं।

52 कार्डों के बेतरतीब ढंग से कटा हुआ डेक के लिए इसकी गणना कैसे करें। आप पूरे डेक के माध्यम से एक बार लूपिंग शुरू करते हैं, और एक प्रकार का हिस्टोग्राम बनाते हैं। प्रत्येक कार्ड की स्थिति के लिएमैं=1,2,,52, अंकित मूल्य के अंतर की गणना करें Δएफमैं=एफमैं+1-एफमैं। इसे और अधिक ठोस बनाने के लिए, आइए बताते हैं कि कार्ड में(मैं+1)वें स्थान हुकुम का राजा है, और कार्ड में है मैंवें स्थान क्लबों के चार है। तो हमारे पास हैंएफमैं+1=51 तथा एफमैं=3 तथा Δएफमैं=51-3=48। जब आप को मिलता हैमैं=52, यह एक विशेष मामला है; आप फिर से डेक की शुरुआत में चारों ओर लूप लेते हैं और लेते हैंΔएफ52=एफ1-एफ52। यदि आप किसी भी के लिए ऋणात्मक संख्याओं के साथ समाप्त होते हैंΔएफ1- मान को 1- मान सीमा में वापस लाने के लिए 52 को जोड़ दें।

आप पास के कार्ड के 52 जोड़े के लिए अंकित मूल्य अंतर के एक सेट के साथ समाप्त करेंगे, प्रत्येक 1-52 से एक अनुमत सीमा में गिर रहा है; 52 तत्वों के साथ एक हिस्टोग्राम (यानी, एक आयामी सरणी) का उपयोग करके इनमें से सापेक्ष आवृत्ति की गणना करें। हिस्टोग्राम डेक के लिए "मनाया गया संभाव्यता वितरण" का एक प्रकार रिकॉर्ड करता है; आप इस वितरण को प्रत्येक बिन में गिनती को 52 से विभाजित करके सामान्य कर सकते हैं। आप इस प्रकार चर की एक श्रृंखला के साथ समाप्त हो जाएंगेपी1,पी2,पी52 जहां हर एक संभावित मानों की एक असतत सीमा पर हो सकता है: {0, 1/52, 2/52, 3/52, आदि} पर निर्भर करता है कि हिस्टोग्राम के एक विशेष बिन में कितने जोड़ीदार अंकित मूल्य अंतर यादृच्छिक रूप से समाप्त हो गए।

एक बार जब आपके पास हिस्टोग्राम होता है, तो आप शैनन एंट्रॉपी की गणना किसी विशेष फेरबदल के रूप में कर सकते हैं

=Σ=152-पीएलn(पी)
मैंने परिणाम प्रदर्शित करने के लिए R में एक छोटा सिमुलेशन लिखा है। पहला कथानक दिखाता है कि एंट्रॉपी 20 फेरबदल पुनरावृत्तियों के दौरान कैसे विकसित होती है। 0 का मान पूरी तरह से आदेशित डेक के साथ जुड़ा हुआ है; बड़े मान एक डेक को दर्शाते हैं जो उत्तरोत्तर अधिक अव्यवस्थित या सजावटी है। दूसरे प्लॉट में 20 पहलुओं की एक श्रृंखला दिखाई देती है, प्रत्येक में एक प्लॉट होता है जो मूल रूप से प्रश्न के साथ शामिल होता है, जिसमें फेरबदल कार्ड ऑर्डर बनाम प्रारंभिक कार्ड ऑर्डर होता है। दूसरे प्लॉट में 20 पहलू पहले प्लॉट में 20 पुनरावृत्तियों के समान हैं, और वे रंग को भी समान रूप से कोडित किया गया है, ताकि आप एक दृश्य अनुभव प्राप्त कर सकें कि शैनन एंट्रोपी किस स्तर से कितनी यादृच्छिकता से मेल खाती है क्रम। सिमुलेशन कोड जो भूखंडों को उत्पन्न करता है उसे अंत में जोड़ा जाता है।

शैनन सूचना एन्ट्रापी बनाम फेरबदल पुनरावृत्ति

फेरबदल आदेश बनाम फेरबदल के 20 पुनरावृत्तियों के लिए आदेश शुरू करते हैं, कार्ड दिखाते हुए उत्तरोत्तर कम सहसंबद्ध हो जाते हैं और समय के साथ अधिक यादृच्छिक रूप से वितरित होते हैं।

library(ggplot2)

# Number of cards
ncard <- 52 
# Number of shuffles to plot
nshuffle <- 20
# Parameter between 0 and 1 to control randomness of the shuffle
# Setting this closer to 1 makes the initial correlations fade away
# more slowly, setting it closer to 0 makes them fade away faster
mixprob <- 0.985 
# Make data frame to keep track of progress
shuffleorder <- NULL
startorder <- NULL
iteration <- NULL
shuffletracker <- data.frame(shuffleorder, startorder, iteration)

# Initialize cards in sequential order
startorder <- seq(1,ncard)
shuffleorder <- startorder

entropy <- rep(0, nshuffle)
# Loop over each new shuffle
for (ii in 1:nshuffle) {
    # Append previous results to data frame
    iteration <- rep(ii, ncard)
    shuffletracker <- rbind(shuffletracker, data.frame(shuffleorder,
                            startorder, iteration))
    # Calculate pairwise value difference histogram
    freq <- rep(0, ncard)
    for (ij in 1:ncard) {
        if (ij == 1) {
            idx <- shuffleorder[1] - shuffleorder[ncard]
        } else {
            idx <- shuffleorder[ij] - shuffleorder[ij-1]
        }
        # Impose periodic boundary condition
        if (idx < 1) {
            idx <- idx + ncard
        }
        freq[idx] <- freq[idx] + 1
    }
    # Sum over frequency histogram to compute entropy
    for (ij in 1:ncard) {
        if (freq[ij] == 0) {
            x <- 0
        } else {
            p <- freq[ij] / ncard
            x <- -p * log(p, base=exp(1))
        }
        entropy[ii] <- entropy[ii] + x
    }
    # Shuffle the cards to prepare for the next iteration
    lefthand <- shuffleorder[floor((ncard/2)+1):ncard]
    righthand <- shuffleorder[1:floor(ncard/2)]
    ij <- 0
    ik <- 0
    while ((ij+ik) < ncard) {
        if ((runif(1) < mixprob) & (ij < length(lefthand))) {
            ij <- ij + 1
            shuffleorder[ij+ik] <- lefthand[ij]
        }
        if ((runif(1) < mixprob) & (ik < length(righthand))) {
            ik <- ik + 1
            shuffleorder[ij+ik] <- righthand[ik]
        }
    }
}
# Plot entropy vs. shuffle iteration
iteration <- seq(1, nshuffle)
output <- data.frame(iteration, entropy)
print(qplot(iteration, entropy, data=output, xlab="Shuffle Iteration", 
            ylab="Information Entropy", geom=c("point", "line"),
            color=iteration) + scale_color_gradient(low="#ffb000",
            high="red"))

# Plot gradually de-correlating sort order
dev.new()
print(qplot(startorder, shuffleorder, data=shuffletracker, color=iteration,
            xlab="Start Order", ylab="Shuffle Order") + facet_wrap(~ iteration,
            ncol=4) + scale_color_gradient(low="#ffb000", high="red"))

2

मुझे पता है कि यह पद लगभग 4 साल पुराना है, लेकिन मैं एक शौक़ीन क्रिप्टोकरंसी हूं, और कार्ड सिफर खेल रहा हूं । परिणामस्वरूप, मैं इस पोस्ट पर बार-बार डेक के फेरबदल के रूप में व्याख्या करने के लिए आया हूं ताकि डेक को बेतरतीब ढंग से कीपिंग के लिए एन्ट्रॉपी के स्रोत के रूप में समझा जा सके। अंत में, मैंने हाथ से डेक को फेरबदल करके और प्रत्येक फेरबदल के बाद डेक एन्ट्रापी का आकलन करके स्टैच्यारा द्वारा उत्तर को सत्यापित करने का निर्णय लिया।

डेक एंट्री को अधिकतम करने के लिए TL, DR:

  • केवल राइफल फेरबदल के लिए, आपको 11-12 फेरबदल चाहिए।
  • डेक को काटने के लिए पहले शिफिंग को रफ करें, इसके लिए आपको केवल 6-7 कट-एंड-शफल्स की आवश्यकता होती है।

सबसे पहले, शैनन एन्ट्रॉपी की गणना के लिए स्टैच्य्रा का उल्लेख किया गया सब कुछ सही है। इसे इस तरह उबाला जा सकता है:

  1. संख्यात्मक रूप से डेक में 52 कार्डों में से प्रत्येक के लिए एक अद्वितीय मूल्य असाइन करें।
  2. डेक को फेरबदल करें।
  3. N = 0 से n = 51 के लिए, (n - (n + 1) mod 52) mod 52 का प्रत्येक मान रिकॉर्ड करें
  4. 0, 1, 2, ..., 49, 50, 51 की घटनाओं की संख्या की गणना करें
  5. 52 से प्रत्येक को विभाजित करके उन रिकॉर्डों को सामान्य करें
  6. I = 1 से i = 52 के लिए, गणना -p_i * लॉग (p_i) / लॉग (2)
  7. मान बढ़ाओ

जहां स्टैच्य्रा एक सूक्ष्म धारणा बनाता है, वह यह है कि कंप्यूटर प्रोग्राम में मानव फेरबदल को लागू करने के लिए कुछ सामान के साथ आने वाला है। पेपर-आधारित प्लेइंग कार्ड के साथ, जैसा कि वे उपयोग करते हैं, आपके हाथों से तेल कार्ड में स्थानांतरित होता है। एक विस्तारित समय में, तेल के निर्माण के कारण, कार्ड एक साथ चिपकना शुरू हो जाएंगे, और यह आपके फेरबदल में समाप्त हो जाएगा। अधिक भारी डेक का उपयोग किया जाता है, अधिक संभावना है कि दो या अधिक आसन्न कार्ड एक साथ चिपकेंगे, और अधिक बार ऐसा होगा।

इसके अलावा, माना जाता है कि दो क्लब और जैक के दिल एक साथ हैं। वे आपके फेरबदल की अवधि के लिए एक साथ अटक सकते हैं, कभी अलग नहीं हो सकते। यह एक कंप्यूटर प्रोग्राम में नकल किया जा सकता है, लेकिन स्टैच्य्रा के आर रूटीन के साथ ऐसा नहीं है।

इसके अलावा, स्टैच्यारा में हेरफेर चर "मिक्सप्रोब" है। इस चर को पूरी तरह से समझने के बिना, यह एक ब्लैक बॉक्स का एक छोटा सा है। आप परिणामों को प्रभावित करते हुए इसे गलत तरीके से सेट कर सकते हैं। इसलिए, मैं यह सुनिश्चित करना चाहता था कि उनका अंतर्ज्ञान सही था। इसलिए मैंने इसे हाथ से सत्यापित किया।

मैंने हाथ से 20 बार डेक को दो अलग-अलग उदाहरणों (40 कुल फेरबदल) में फेरबदल किया। पहले उदाहरण में, मैंने सिर्फ दाएं और बाएं कट को समीप रखते हुए, फेरबदल किया है। दूसरे उदाहरण में, मैंने राइफल फेरबदल के लिए एक समान कटौती करने से पहले डेक को जानबूझकर डेक (1/3, 2/5, 1/4, आदि) के बीच से दूर कर दिया। दूसरे उदाहरण में मेरी आंत महसूस कर रही थी कि फेरबदल से पहले डेक को काटने से, और बीच से दूर रहने से, मैं स्टॉक राइफल फेरबदल की तुलना में अधिक तेजी से डेक में प्रसार का परिचय दे सकता था।

यहाँ परिणाम हैं। सबसे पहले, सीधे राइफल फेरबदल:

राइफल फेरबदल के साथ प्रति कार्ड एंट्री

और यहाँ राइफल फेरबदल के साथ संयुक्त डेक काट रहा है:

कटाई और राइफल फेरबदल के साथ प्रति कार्ड एंट्री

ऐसा लगता है कि स्ट्रोयरा द्वारा लगभग 1/2 में दावे के समय में एन्ट्रापी को अधिकतम किया जाता है। इसके अलावा, मेरा अंतर्ज्ञान सही था कि डेक को जानबूझकर बीच में पहले से काट दिया गया था, इससे पहले कि राइफल फेरबदल ने डेक में अधिक प्रसार शुरू किया। हालांकि, लगभग 5 फेरबदल के बाद, यह वास्तव में ज्यादा मायने नहीं रखता था। आप देख सकते हैं कि लगभग 6-7 फेरबदल के बाद, एन्ट्रापी को अधिकतम किया जाता है, बनाम 10-12 के रूप में दावे ने मेरा स्टैच्रा बनाया। क्या यह संभव हो सकता है कि 7 फेरबदल पर्याप्त हैं, या क्या मुझे अंधा कर दिया जा रहा है?

आप मेरा डेटा Google शीट्स पर देख सकते हैं । यह संभव है कि मैंने एक प्लेइंग कार्ड या दो गलत दर्ज किए, इसलिए मैं डेटा के साथ 100% सटीकता की गारंटी नहीं दे सकता।

यह महत्वपूर्ण है कि आपके निष्कर्ष भी स्वतंत्र रूप से सत्यापित हों। हार्वर्ड विश्वविद्यालय में गणित विभाग के ब्रैड मान ने अध्ययन किया कि डेक में किसी भी कार्ड की पूर्वानुमेयता पूरी तरह से अप्रत्याशित होने से पहले कार्ड के डेक को फेरबदल करने में कितनी बार लगेगा (शैनन एन्ट्रोपी अधिकतम है)। उसका परिणाम इस 33-पृष्ठ पीडीएफ में पाया जा सकता है ।

उनके निष्कर्षों के साथ जो दिलचस्प है, वह यह है कि वह वास्तव में Persi Diaconis द्वारा 1990 के न्यूयॉर्क टाइम्स के लेख की स्वतंत्र रूप से पुष्टि कर रहे हैं, जो दावा करते हैं कि 7 फेरबदल राइफल फेरबदल के माध्यम से ताश के पत्तों के डेक को अच्छी तरह से मिलाने के लिए पर्याप्त हैं।

ब्रैड मान फेरफिंग में कुछ अलग गणितीय मॉडल के माध्यम से चलता है, जिसमें मार्कोव चेन भी शामिल है, और निम्नलिखित निष्कर्ष पर आते हैं:

यह n = 52 के लिए लगभग 11.7 है, जिसका अर्थ है कि, इस दृष्टिकोण के अनुसार, हम कार्ड के एक वास्तविक डेक को यादृच्छिक बनाने के लिए औसत 11 या 12 फेरबदल की उम्मीद करते हैं। ध्यान दें कि यह 7 से काफी बड़ा है।

ब्रैड मान ने केवल स्वतंत्र रूप से स्टैचरी के परिणाम का सत्यापन किया, और मेरा नहीं। इसलिए, मैंने अपने डेटा को करीब से देखा, और मुझे पता चला कि 7 फेरबदल पर्याप्त नहीं हैं। सबसे पहले, डेक में किसी भी कार्ड के लिए बिट्स में सैद्धांतिक अधिकतम शैनन एंट्रोपी लॉग (52) / लॉग (2) ~ = 5.7 बिट्स है। लेकिन मेरा डेटा कभी भी 5 बिट्स से अधिक नहीं टूटता है। जिज्ञासु, मैंने पायथन में 52 तत्वों की एक सरणी बनाई, उस सरणी को बदल दिया:

>>> import random
>>> r = random.SystemRandom()
>>> d = [x for x in xrange(1,52)]
>>> r.shuffle(d)
>>> print d
[20, 51, 42, 44, 16, 5, 18, 27, 8, 24, 23, 13, 6, 22, 19, 45, 40, 30, 10, 15, 25, 37, 52, 34, 12, 46, 48, 3, 26, 4, 1, 38, 32, 14, 43, 7, 31, 50, 47, 41, 29, 36, 39, 49, 28, 21, 2, 33, 35, 9, 17, 11]

इसकी एन्ट्रापी-प्रति-कार्ड पैदावार की गणना लगभग 4.8 बिट्स करती है। एक दर्जन बार ऐसा करना या ऐसा ही परिणाम 5.2 बिट्स और 4.6 बिट्स के बीच भिन्नता दिखाता है, औसत के रूप में 4.8 से 4.9। इसलिए मेरे डेटा के कच्चे एन्ट्रापी मूल्य को देखने के लिए पर्याप्त नहीं है, अन्यथा मैं इसे 5 फेरबदल में अच्छा कह सकता था।

जब मैं अपने डेटा को करीब से देखता हूं, तो मैंने "शून्य बाल्टियों" की संख्या पर ध्यान दिया। ये वो बकेट हैं जहां उस नंबर के कार्ड चेहरे के बीच डेल्टास के लिए कोई डेटा नहीं है। उदाहरण के लिए, दो आसन्न कार्डों के मूल्य को घटाते समय, सभी 52 डेल्टास की गणना के बाद "15" परिणाम नहीं होता है।

मैं देखता हूं कि यह अंततः लगभग 11-12 फेरबदल के आसपास 17-18 "शून्य बाल्टियां" बसाता है। निश्चित रूप से, पायथन औसत 17-18 "शून्य बाल्टियों" के माध्यम से मेरा फेरबदल डेक, 21 की ऊँचाई के साथ और 14. 14. कम 17-18 का परिणाम क्यों है, मैं समझा नहीं सकता ... अभी तक। लेकिन, ऐसा प्रतीत होता है कि मैं दोनों ~ 4.8 बिट्स ऑफ एन्ट्रोपी और 17 "जीरो बकेट" चाहता हूं।

मेरे स्टॉक में फेरबदल के साथ, यह 11-12 फेरबदल है। मेरे कट-एंड-शफल के साथ, यह 6-7 है। इसलिए, जब खेलों की बात आती है, तो मैं कट-एंड-शफल्स की सिफारिश करूंगा। न केवल यह गारंटी देता है कि शीर्ष और नीचे के कार्ड प्रत्येक फेरबदल में डेक में मिश्रित हो रहे हैं, यह 11-12 फेरबदल की तुलना में सिर्फ सादा तेज है। मैं आपके बारे में नहीं जानता, लेकिन जब मैं अपने परिवार और दोस्तों के साथ कार्ड गेम खेल रहा हूं, तो वे मेरे लिए पर्याप्त नहीं हैं कि मैं 12 राइफल रफल्स कर सकूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.