اس لاٹری سسٹم میں، 1 سے 49 کے پول میں سے 10 نمبر بے ترتیب طور پر نکالے جاتے ہیں۔ کھلاڑی 5 نمبر منتخب کرتے ہیں، اور نکالے گئے نمبروں سے کتنے نمبر مماثل ہوتے ہیں اس کی بنیاد پر انعامات دیے جاتے ہیں۔
یہ ایک دلچسپ حرکیات پیدا کرتا ہے جہاں بڑے انعامات غیر معمولی طور پر نایاب ہوتے ہیں، جبکہ چھوٹے جیت نسبتاً زیادہ کثرت سے ہوتے ہیں۔
5 میں سے ٹھیک k نمبروں کا مماثل ہونے کا امکان P(k) اس طرح شمار کیا جاتا ہے:
جہاں:
• C(n,k) مجموعوں کی نمائندگی کرتا ہے (n میں سے k عناصر کو منتخب کرنے کے طریقے)
• 5 کھلاڑی کے منتخب کردہ نمبروں کی تعداد ہے
• 10 قرعہ اندازی کے ذریعے نکالے گئے فاتح نمبروں کی تعداد ہے
• 49 ممکنہ نمبروں کی کل تعداد ہے
P(k) = [C(5,k) × C(44,10-k)] / C(49,10)
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
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
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
P(جیت) = P(3) + P(4) + P(5)
≈ 0.04698 + 0.004295 + 0.000132
≈ 0.0514 ≈ 19.45 میں 1
اس کا مطلب ہے کہ کھلاڑی کے پاس کوئی بھی انعام جیتنے کا تقریباً 5.14% موقع ہے۔
/**
* 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);
}