Draw Code used by Flicker

لاٹری جیتنے کے امکانات

گیم کا جائزہ

اس لاٹری سسٹم میں، 1 سے 49 کے پول میں سے 10 نمبر بے ترتیب طور پر نکالے جاتے ہیں۔ کھلاڑی 5 نمبر منتخب کرتے ہیں، اور نکالے گئے نمبروں سے کتنے نمبر مماثل ہوتے ہیں اس کی بنیاد پر انعامات دیے جاتے ہیں۔

انعام کی تقسیم کے قواعد

  • کوئی بھی انعام جیتنے کے لیے کم از کم ضرورت 3 نمبروں کا مماثل ہونا ہے۔
  • اگر 5 میچز کے ساتھ ایک فاتح ہے، تو انہیں مختص سپر جیک پاٹ کا 100% ملتا ہے۔
  • اگر 4+ میچز کے ساتھ صرف 1 فاتح ہے، تو انہیں مختص جیک پاٹ انعام کا 100% ملتا ہے۔
  • 4+ میچز والے 2 فاتحین کے ساتھ، انعامات 62.5%/37.5% تقسیم کیے جاتے ہیں۔
  • 3-میچ کے فاتحین کے لیے، کل پول کا صرف 50% مختص کیا جاتا ہے، جو بالترتیب پہلے/دوسرے/تیسرے مقامات کے لیے 30%/15%/5% کے طور پر تقسیم کیا جاتا ہے۔

یہ ایک دلچسپ حرکیات پیدا کرتا ہے جہاں بڑے انعامات غیر معمولی طور پر نایاب ہوتے ہیں، جبکہ چھوٹے جیت نسبتاً زیادہ کثرت سے ہوتے ہیں۔

امکان کا حساب

5 میں سے ٹھیک k نمبروں کا مماثل ہونے کا امکان P(k) اس طرح شمار کیا جاتا ہے:

P(k) = [C(5,k) × C(44,10-k)] / C(49,10)

جہاں:
• C(n,k) مجموعوں کی نمائندگی کرتا ہے (n میں سے k عناصر کو منتخب کرنے کے طریقے)
• 5 کھلاڑی کے منتخب کردہ نمبروں کی تعداد ہے
• 10 قرعہ اندازی کے ذریعے نکالے گئے فاتح نمبروں کی تعداد ہے
• 49 ممکنہ نمبروں کی کل تعداد ہے

امکان کا حساب کتابی تجزیہ

ہائپر جیومیٹرک ڈسٹری بیوشن فارمولا

P(k) = [C(5,k) × C(44,10-k)] / C(49,10)

3 میچز

P(3) = [C(5,3) × C(44,7)] / C(49,10)

= (10 × 38,608,020) / 8,217,822,536

≈ 386,080,200 / 8,217,822,536

≈ 0.04698 ≈ 21.28 میں 1

4 میچز

P(4) = [C(5,4) × C(44,6)] / C(49,10)

= (5 × 7,059,052) / 8,217,822,536

≈ 35,295,260 / 8,217,822,536

≈ 0.004295 ≈ 233 میں 1

5 میچز (سپر جیک پاٹ)

P(5) = [C(5,5) × C(44,5)] / C(49,10)

= (1 × 1,086,008) / 8,217,822,536

≈ 1,086,008 / 8,217,822,536

≈ 0.000132 ≈ 7,566 میں 1

مجموعی جیتنے کا امکان (≥3 میچز)

P(جیت) = P(3) + P(4) + P(5)

≈ 0.04698 + 0.004295 + 0.000132

≈ 0.0514 ≈ 19.45 میں 1

اس کا مطلب ہے کہ کھلاڑی کے پاس کوئی بھی انعام جیتنے کا تقریباً 5.14% موقع ہے۔

اہم نتائج

  • حقیقی جیک پاٹ کے امکانات (5 میچز) 7,566 میں 1 ہیں
  • کوئی بھی انعام جیتنے کا موقع (≥3 میچز) 19.45 میں 1 ہے

The method used for Draw

            
              /**               
               * Generates an array of unique random integers within a specified range in sorted order.
               *
               * Performed daily for draws with parameters of generateUniqueRandomSortedIntegers(10, 1, 49)
               *
               *
               * @param {number} count - The number of unique integers to generate (must be positive)
               * @param {number} min - The lower bound of the range (inclusive)
               * @param {number} max - The upper bound of the range (inclusive)
               * @returns {number[]} A sorted array of unique random integers
               * @throws {Error} If the requested count exceeds the possible unique values in the range
               * or if any parameter is invalid
               */
              function generateUniqueRandomSortedIntegers(count, min, max) {
                // Validate input parameters
                if (!Number.isInteger(count) || !Number.isInteger(min) || !Number.isInteger(max)) {
                  throw new Error("All parameters must be integers");
                }

                if (count <= 0) {
                  throw new Error("Count must be a positive integer");
                }

                if (min > max) {
                  throw new Error("Minimum value cannot exceed maximum value");
                }

                const rangeSize = max - min + 1;
                if (count > rangeSize) {
                  throw new Error(`Cannot generate ${count} unique numbers in range [${min}, ${max}]`);
                }

                // For small ranges relative to count, use Fisher-Yates shuffle algorithm
                if (count > rangeSize / 2) {
                  const allNumbers = Array.from({length: rangeSize}, (_, i) => min + i);

                  // Fisher-Yates shuffle
                  for (let i = allNumbers.length - 1; i > 0; i--) {
                    const j = Math.floor(Math.random() * (i + 1));
                    [allNumbers[i], allNumbers[j]] = [allNumbers[j], allNumbers[i]];
                  }

                  return allNumbers.slice(0, count).sort((a, b) => a - b);
                }

                // For larger ranges relative to count, use Set approach
                const uniqueNumbers = new Set();
                while (uniqueNumbers.size < count) {
                  const randomNumber = Math.floor(Math.random() * rangeSize) + min;
                  uniqueNumbers.add(randomNumber);
                }

                return Array.from(uniqueNumbers).sort((a, b) => a - b);
              }