बड़ा, स्मार्ट (एर) दांव लगाना


16

मैं 1X2 (भारित) खेलों में दांव का सुझाव देने के लिए एक एल्गोरिथ्म कोड करने की कोशिश कर रहा हूं।

मूल रूप से, प्रत्येक खेल में मैचों का एक सेट होता है (घर से दूर की टीमें):

  • 1: घर जीतता है
  • X: ड्रा
  • 2: जीत दूर

BWin 1X2 बेटिंग गेम

प्रत्येक मैच और प्रतीक (के लिए 1, Xऔर 2), मैं एक प्रतिशत है कि कि प्रतीक सही मिलान परिणाम जा रहा है की संभावना / संभावना का प्रतिनिधित्व करता है आवंटित करेगा। यहाँ संरचना का प्रतिनिधित्व करने वाला एक सरणी है:

$game = array
(
    'match #1' => array // stdev = 0.0471
    (
        '1' => 0.3,     // 30%     home wins
        'X' => 0.4,     // 40%     draw
        '2' => 0.3,     // 30%     away wins
    ),

    'match #2' => array // stdev = 0.4714
    (
        '1' => 0.0,     //   0%    home wins
        'X' => 0.0,     //   0%    draw
        '2' => 1.0,     // 100%    away wins
    ),

    'match #3' => array // stdev = 0.4027
    (
        '1' => 0.1,     //  10%    home wins
        'X' => 0.0,     //   0%    draw
        '2' => 0.9,     //  90%    away wins
    ),
);

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

निम्नलिखित छद्म एल्गोरिथ्म में समग्र वर्कफ़्लो का वर्णन करना चाहिए:

for each match, sorted by std. dev         // "uncertain" matches first
    if still can make triple bets
        mark top 3 symbols of match        // mark 3 (all) symbols
    else if still can make double bets
        mark top 2 symbols of match        // mark 2 (highest) symbols
    else if can only make single bets      // always does
        mark top symbol of match           // mark 1 (highest) symbol

अब तक बहुत अच्छा है, लेकिन मुझे एल्गोरिथ्म को बताने की जरूरत है कि मैं कितना खर्च करना चाहता हूं। चलो 1जो भी मुद्रा में एक शर्त शर्त कहते हैं , एक से अधिक शर्त लागत की गणना करने का सूत्र है:

2^double_bets * 3^triple_bets * cost_per_bet (= 1)

जाहिर है, एल्गोरिथ्म को शर्त सुझाव में जितना संभव हो सके उतना पैसा आवंटित करने की कोशिश करनी चाहिए (इससे बहुत मतलब नहीं होगा), और अब यह कहाँ मुश्किल हो जाता है ...

आइए बताते हैं कि मैं अधिकतम भुगतान करना चाहता हूं 4, PHP में सभी संभावित गुणकों की सूची बनाना ( @ IDEOne ):

$cost = 1; // cost per single bet
$result = array();
$max_cost = 4; // maximum amount to bet

foreach (range(0, 3) as $double)
{
	foreach (range(0, 3) as $triple)
	{
		if (($double + $triple) <= 3) // game only has 3 matches
		{
			$bets = pow(2, $double) * pow(3, $triple); // # of bets

            $result[$bets] = array
            (
                'cost'      => $bets * $cost, // total cost of this bet
                'double'    => $double,
				'triple'    => $triple,
            );

            if ($result[$bets]['cost'] > $max_cost)
			{
				unset($result[$bets]);
            }
        }
    }
}

ksort($result);

निम्नलिखित उत्पादन पैदावार:

Array
(
    [1] => Array
        (
            [cost] => 1
            [double] => 0
            [triple] => 0
        )

    [2] => Array
        (
            [cost] => 2
            [double] => 1
            [triple] => 0
        )

    [3] => Array
        (
            [cost] => 3
            [double] => 0
            [triple] => 1
        )

    [4] => Array
        (
            [cost] => 4
            [double] => 2
            [triple] => 0
        )
)

समस्या

यदि मैं उपलब्ध अधिकतम राशि खेलने के लिए चुनता हूं ( 4) तो मुझे दो डबल्स के साथ शर्त लगाना होगा, अगर मैं ऊपर वर्णित छद्म-एल्गोरिथ्म का उपयोग करता हूं तो मैं निम्नलिखित शर्त सुझाव के साथ समाप्त करूंगा:

  • match #1 => X1
  • match #2 => 2
  • match #3 => 12

जब ट्रिपल शर्त की तुलना में उप-इष्टतम लगता है जो लागत 3और अधिक अनिश्चितता को कवर करता है:

  • match #1 => X12
  • match #2 => 2
  • match #3 => 2

उपरोक्त उदाहरण और भी अधिक प्रासंगिकता प्राप्त करता है यदि आप समझते हैं कि match #3अंतर हो सकता है:

$game['match #3'] = array // stdev = 0.4714
(
    '1' => 0.0,           //   0%    home wins
    'X' => 0.0,           //   0%    draw
    '2' => 1.0,           // 100%    away wins
);

इस मामले में मैं बिना किसी अच्छे कारण के एक डबल बर्बाद कर रहा हूं।

मूल रूप से, मैं केवल सबसे बड़ी (संभवतः बेवकूफ) शर्त चुन सकता हूं और सबसे चतुर, सबसे बड़ी शर्त नहीं

मैं कुछ दिनों के लिए दीवार के खिलाफ अपना सिर पीट रहा हूं, मुझे उम्मीद है कि मुझे किसी प्रकार की एपिफेनी मिल जाएगी, लेकिन अभी तक मैं केवल दो आधे के साथ ही आ पाया हूं- [बुरा-] समाधान:


1) एक "रेखा" बनाएं

मूल रूप से मैं यह कहूंगा कि एक विशिष्ट मूल्य से कम एक स्टदेव के साथ मैच ट्रिपल होगा, एक स्टदेव के साथ मैच एक बड़ा उच्चतर डबल दांव और बाकी एकल दांव होंगे।

इसके साथ समस्या, निश्चित रूप से, उपयुक्त विशिष्ट सीमाओं का पता लगा रही है - और यहां तक ​​कि अगर मुझे "सबसे चतुर" शर्त के लिए सही मान मिलें, तो भी मुझे नहीं पता कि मेरे पास सुझाए गए दांव को खेलने के लिए पर्याप्त पैसा है या नहीं मैं एक भी बड़ा (भी स्मार्ट) शर्त लगा सकता है ...


2) ब्रूटफोर्स

मैं इस प्रश्न को लिखते समय इस विचार के साथ आया था और मुझे पता है कि यह मेरे द्वारा बताए गए संदर्भ में सही अर्थ नहीं करेगा, लेकिन मुझे लगता है कि मैं इसे कुछ अलग मैट्रिक्स का उपयोग करके काम कर सकता था। मूल रूप से, मैं इस कार्यक्रम मैं (से निभा सकता है पैसे की हर संभव राशि के लिए दांव (ट्रिपल और डबल दांव की #) का सुझाव कर सकते हैं 1करने के लिए 4(कुछ मेरी उदाहरण में), छद्म एल्गोरिथ्म मैं ऊपर वर्णित लागू करने और एक वैश्विक रैंकिंग मूल्य की गणना जैसे % of symbols * match stdev- मुझे पता है, इसका कोई मतलब नहीं है)।

उच्चतम रैंकिंग (अनिश्चितता को कवर) के साथ शर्त सुझाई गई शर्त होगी। इस दृष्टिकोण के साथ समस्या (इस तथ्य के अलावा कि यह अभी तक कोई मतलब नहीं है) यह है कि जिन खेलों के साथ मेरा कार्यक्रम काम करने जा रहा है, वे 3 मैचों तक सीमित नहीं हैं और उन मैचों के लिए डबल और ट्रिपल शर्त संयोजनों की संख्या होगी काफी अधिक है।


मुझे लगता है कि एक सुंदर समाधान है, लेकिन मैं इसे समझ नहीं सकता ...

इस समस्या को क्रैक करने में किसी भी मदद की बहुत सराहना की जाती है, धन्यवाद।


मेरी समस्या के बारे में कुछ भ्रम प्रतीत हो रहा है, मैंने पहले ही इस प्रश्न में और टिप्पणियों में भी इसे संबोधित किया है, लेकिन गलत व्याख्या अभी भी प्रबल है, कम से कम कुछ के लिए।

मुझे यह जानने की जरूरत है कि मैं एक विशिष्ट गेम (सभी मैचों) के लिए कितने ट्रिपल, डबल और सिंगल दांव खेलूंगा । मैं पहले से ही जानता हूं कि मैं प्रत्येक मैच को व्यक्तिगत रूप से देखकर क्या प्रतीक खेलना चाहता हूं।


4
Math.stackexchange.com पर अच्छे लोग आपके द्वारा बताई गई समस्या के बारे में बेहतर समझ प्रदान करने में सक्षम हो सकते हैं, जो इसे लागू करने के लिए अच्छे तरीके सुझा सकते हैं :)

1
@Lethargy: मैंने एक बार पास्कल ट्रायंगल और प्राइम नंबर्स के बारे में एक सवाल यहां पोस्ट किया था जो बाद में गणित में स्थानांतरित हो गया। मुझे लगभग 15 upvotes (SO और math.SE दोनों पर) बहुत जल्दी मिल गए लेकिन सवाल 30 मिनट से भी कम समय में बंद हो गया और यह अब भी मौजूद नहीं है। मुझे नहीं लगता कि वे इस तरह के "सरल" सवालों को बहुत पसंद करते हैं।
एलिक्स एक्सल

2
यदि हम अधिकतम संख्या जीत के लिए अनुकूलन करते हैं तो यह वास्तव में बहुत आसान लगता है। जीत की औसत संख्या एक साथ जोड़े गए प्रत्येक एकल उदाहरण की जीत की संभावना है। यानी अगर हम अधिकतम मौके पर एक ही दांव लगाते हैं तो हम औसतन 0.4 + 1 + 0.9 = 2.3 गेम जीतेंगे। इसलिए यदि 1 दांव जोड़ना हमेशा समान रूप से महंगा था, तो समाधान बस जीत की संभावना को छांटने और पहले COST संभावनाएं लेने के लिए होगा (यह उदाहरण के लिए "सर्वश्रेष्ठ" परिणाम देता है)। यदि किसी चीज के लिए दूसरा बनाम तीसरा जोड़ते समय लागत अलग है, तो यह अधिक जटिल हो जाता है (bruteforce पुनरावर्ती कार्य हालांकि) और मुझे लगता है कि मैं इस पर सोऊंगा।

2
एक गणितज्ञ के रूप में, जो php को नहीं जानता है, मुझे इस समस्या पर हमला करने में बहुत आसानी होगी अगर यह कोड के बजाय गणितीय अंकन में होता।

2
क्या आपने केली की कसौटी के बारे में सुना है ? यदि नहीं, तो आपके लिए कुछ पढ़ने का अधिकार है।

जवाबों:


2

मुझे लगता है कि मैं एक कामचलाऊ समाधान के साथ आया, यह इस तरह से है:


  • 1) मैं कर सकता हूँ कई दांव के हर संभव संयोजन की गणना

मेरे प्रश्न में दिए गए उदाहरण और राशियों के लिए, यह होगा:

  • 3 सिंगल, 0 डबल, 0 ट्रिपल = 1 सिंगल बेट के बराबर
  • 2 सिंगल, 1 डबल, 0 ट्रिपल = 2 सिंगल बेट के बराबर
  • 2 सिंगल, 0 डबल, 1 ट्रिपल = 3 सिंगल बेट के बराबर
  • 1 सिंगल, 2 डबल, 0 ट्रिपल = 4 सिंगल बेट्स के बराबर

  • 2) हर मैच के लिए प्रतीक बाधाओं के मानक विचलन की गणना करें

             |    1    |    X    |    2    |  stdev  |
             |---------|---------|---------|---------|
    Match #1 |   0.3   |   0.4   |   0.3   |  0.047  |
             |---------|---------|---------|---------|
    Match #2 |   0.1   |   0.0   |   0.9   |  0.402  |
             |---------|---------|---------|---------|
    Match #3 |   0.0   |   0.0   |   1.0   |  0.471  |
    

  • 3) प्रत्येक एकाधिक शर्त संयोजन के लिए ( चरण 1 ) सूत्र का उपयोग करके रैंकिंग की गणना करें:

    रैंकिंग = (# एन (एक्स) [+ # एन (वाई) [+ # एन (जेड)]] / स्टदेव (#)

जहां #nएक विशिष्ट मैच है और #n(x|y|z)प्रतीकों का आदेश दिया गया अंतर है।

  • मैचों को निम्न से उच्च मानक विचलन के लिए संसाधित किया जाता है।
  • प्रत्येक मैच में व्यक्तिगत प्रतीकों को उच्च से निम्न बाधाओं से संसाधित किया जाता है।

1 सिंगल, 2 डबल, 0 ट्रिपल बेट के लिए टेस्ट:

  • (#1(X) + #1(1)) / stdev(#1) = (0.4 + 0.3) / 0.047 = 14.89
  • (#2(2) + #2(1)) / stdev(#2) = (0.9 + 0.1) / 0.402 = 2.48
  • #3(2) / stdev(#3) = 1.0 / 0.471 = 2.12

यह शर्त मुझे वैश्विक रैंकिंग प्रदान करती है 14.89 + 2.48 + 2.12 = 19.49


2 सिंगल, 0 डबल, 1 ट्रिपल बेट के लिए टेस्ट:

  • (#1(X) + #1(1) + #1(2)) / stdev(#1) = (0.4 + 0.3 + 0.3) / 0.047 = 21.28
  • #2(2) / stdev(#2) = 0.9 / 0.402 = 2.24
  • #3(2) / stdev(#3) = 1.0 / 0.471 = 2.12

जो मुझे वैश्विक रैंकिंग देता है 21.28 + 2.24 + 2.12 = 25.64:-)


शेष सभी दांव स्पष्ट रूप से नीच होंगे, इसलिए उनका परीक्षण करने का कोई मतलब नहीं है।

यह विधि काम करने लगती है, लेकिन मैं परीक्षण और त्रुटि के माध्यम से इसके साथ आया और अपनी आंत के बाद, मुझे यह समझने के लिए गणितीय समझ की कमी है कि क्या यह सही है या भले ही बेहतर तरीका हो ...

कोई संकेत?

पुनश्च: खराब प्रारूपण के लिए क्षमा करें, लेकिन MD पार्सर StackOverflow से भिन्न प्रतीत होता है।


क्या आपने इस समस्या को हल करने के लिए रैखिक प्रोग्रामिंग ( en.wikipedia.org/wiki/Linear_programming ) पर विचार किया है?
विक्टर सोरोकिन

1

कैसे सिम्पलेक्स विधि के आधार पर एक समाधान बनाने के बारे में। चूंकि सिम्प्लेक्स विधि का उपयोग करने का आधार पूरा नहीं हुआ है, इसलिए हमें विधि को थोड़ा संशोधित करने की आवश्यकता है। मैं संशोधित संस्करण "वॉक द लाइन" कहता हूं।

तरीका:

आप प्रत्येक मैच की अनिश्चितता को मापने में सक्षम हैं। कर दो! सिंगल या डबल बेट के साथ प्रत्येक मैच की अनिश्चितता की गणना करें (ट्रिपल शर्त के लिए कोई अनिश्चितता नहीं है)। डबल या ट्रिपल शर्त जोड़ते समय, हमेशा वह चुनें जो अनिश्चितता को सबसे कम करता है।

  1. ट्रिपल बेटों की अधिकतम संख्या पर प्रारंभ करें। कुल अनिश्चितता की गणना करें।
  2. एक ट्रिपल शर्त निकालें। अधिकतम लागत को ध्यान में रखते हुए एक या दो दोहरे दांव जोड़ें। कुल अनिश्चितता की गणना करें।
  3. चरण 2 को दोहराएं जब तक कि आपके पास अधिकतम दोहरे दांव न हों।

सबसे कम कुल अनिश्चितता के साथ शर्त चुनें।


0

क्या मैं इस sportsbets मैं इस निष्कर्ष पर आया था देखने से आते हैं।

अपेक्षित मूल्य
बताते हैं कि आपके पास 3 दांव सफेद हैं 1.29 5.5 and 10.3(तालिका में अंतिम शर्त) ईवी सट्टेबाजी के लिए है,
EV = 1/(1/1.29+1/5.5+1/10.3) - 1 = -0.05132282687714185 अगर यह माना जाता है कि एक दूसरे पर जीतने वाले संभावितों को वितरित किया जाता है
1/1.29 : 1/5.5 : 1/10.3, तो आप अपने ईवी नकारात्मक होने के बाद लंबे समय तक अपना पैसा खो रहे हैं।
आप तभी लाभ उठा सकते हैं जब आप यह जान सकें कि प्रत्येक परिणाम की संभावनाएँ क्या हैं और अनियमितताओं का पता लगा सकते हैं।

कहते हैं कि सच्ची संभावनाएँ हैं
0.7 : 0.2 : 0.1

इसका मतलब है कि दरें होनी चाहिए 1.43 \ 5.0 \ 10.0

आप यह देख सकते हैं कि इस मामले में सर्वश्रेष्ठ अदायगी सट्टेबाजी ड्रा के लिए है क्योंकि यह आपको देता है
EV(0) = 5.5/5 - 1 = 0.1
कि हार पर
EV(2) = 10.2/10 - 1 = 0.02
सट्टेबाजी के लिए और घर की जीत के लिए सट्टेबाजी ईवी भी है-
EV(1) = 1.29/1.43 - 1 = -0.10


मुझे नहीं लगता कि आपको मेरा सवाल मिला है। मुझे पहले से ही पता है कि प्रत्येक व्यक्तिगत मैच पर दांव लगाने के लिए कौन से प्रतीक (और कई शर्त के मामले में किस क्रम में) हैं। मेरी समस्या विश्व स्तर पर सभी मैचों (और उनके संबंधित प्रतीक अवसरों) को देखकर मुझे आदर्श ट्रिपल और डबल बेट्स की आदर्श संख्या का पता लगाना चाहिए
एलिक्स एक्सल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.