Draw Code used by Flicker

Mga Probabilidad ng Panalo sa Lottery

Pangkalahatang-ideya ng Laro

Sa sistemang lottery na ito, 10 numero ang random na binubunot mula sa 1 hanggang 49. Ang mga manlalaro ay pumipili ng 5 numero, at ang mga premyo ay iginagawad batay sa kung ilang numero ang tumutugma sa mga binunot na numero.

Mga Panuntunan sa Pamamahagi ng Premyo

  • Ang minimum na kinakailangan para manalo ng anumang premyo ay pagtutugma ng 3 numero.
  • Kung may Isang nanalo na may 5 tugma, makakatanggap sila ng 100% ng nakalaang SUPER JACKPOT.
  • Kung mayroon lamang 1 nanalo na may 4+ na tugma, makakatanggap sila ng 100% ng nakalaang premyo ng JACKPOT.
  • Sa 2 nanalo na may 4+ na tugma, ang mga premyo ay ipinamamahagi ng 62.5%/37.5%.
  • Para sa mga 3-match winners, 50% lamang ng kabuuang pool ang inilalaan, na ipinamamahagi bilang 30%/15%/5% para sa 1st/2nd/3rd places ayon sa pagkakasunod.

Lumilikha ito ng isang kawili-wiling dinamika kung saan ang mas malalaking premyo ay pambihira, habang ang mas maliliit na panalo ay medyo mas madalas mangyari.

Pagkalkula ng Probabilidad

Ang probabilidad P(k) ng pagtutugma ng eksaktong k na numero mula sa 5 ay kinakalkula bilang:

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

Kung saan:
• C(n,k) ay kumakatawan sa mga kombinasyon (bilang ng mga paraan upang pumili ng k na elemento mula sa n)
• 5 ay ang bilang ng mga numerong pinili ng manlalaro
• 10 ay ang bilang ng mga binunot na numerong panalo
• 49 ay ang kabuuang bilang ng mga posibleng numero

Pagsusuri sa Pagkalkula ng Probabilidad

Pormula ng Hypergeometric Distribution

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

3 Tugma

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 ≈ 1 sa 21.28

4 Tugma

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 ≈ 1 sa 233

5 Tugma (SUPER JACKPOT)

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 ≈ 1 sa 7,566

Pangkalahatang Probabilidad ng Panalo (≥3 Tugma)

P(panalo) = P(3) + P(4) + P(5)

≈ 0.04698 + 0.004295 + 0.000132

≈ 0.0514 ≈ 1 sa 19.45

Nangangahulugan ito na ang isang manlalaro ay may humigit-kumulang 5.14% na pagkakataong manalo ng anumang premyo.

Mga Pangunahing Natuklasan

  • Ang aktwal na posibilidad ng jackpot (5 tugma) ay 1 sa 7,566
  • Ang pagkakataong manalo ng anumang premyo (≥3 tugma) ay 1 sa 19.45

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);
              }