کیا آپ کو کسی گیو اوے کے فاتح کا قرعہ نکالنا ہے، کسی طالب علم کو بلانا ہے، یا یہ طے کرنا ہے کہ برتن کون دھوئے گا؟ یہ مفت آن لائن بے ترتیب ٹول آپ کی پیسٹ کردہ کسی بھی فہرست سے منصفانہ انتخاب کرتا ہے۔ اپنے نام یا اندراجات کو 'آئٹمز' باکس میں ڈالیں — ہر ایک کو نئی سطر پر رکھیں، یا کاما سے الگ کریں — پھر 'انتخاب کی تعداد' کے ذریعے اپنی مطلوبہ تعداد سیٹ کریں اور 'بنائیں' پر کلک کریں۔ ایک فہرست میں کم از کم دو اندراجات ہونے چاہئیں اور اس میں 1000 تک شامل کیے جا سکتے ہیں، جن میں سے ہر ایک کی لمبائی 200 حروف تک ہو سکتی ہے۔
ہر انتخاب براہ راست آپ کے براؤزر میں Web Crypto API (crypto.getRandomValues) کا استعمال کرتے ہوئے کیا جاتا ہے، جو آپ کے براؤزر کے بنیادی سسٹم کی بے ترتیبی سے کرپٹوگرافک طور پر محفوظ رینڈم ویلیوز فراہم کرتا ہے۔ آپ کی فہرست کبھی کسی سرور پر نہیں بھیجی جاتی، نہ اسے لاگ کیا جاتا ہے، اور نہ ہی ہم اسے دیکھتے ہیں — اور یہ بات دوسرے جنریٹرز کے مقابلے میں یہاں زیادہ اہم ہے، کیونکہ عموماً لوگ کسٹمرز کی فہرستیں، کلاس رجسٹر، یا ساتھیوں کے نام یہاں پیسٹ کرتے ہیں۔ 'فائل سے لوڈ کریں۔' بٹن بھی یہی وعدہ نبھاتا ہے: آپ کا براؤزر خود فائل پڑھ کر باکس کو مقامی طور پر بھرتا ہے، اور کہیں بھی کچھ اپ لوڈ نہیں ہوتا۔
یہ آپشنز ان فہرستوں کے لیے بنائے گئے ہیں جو حقیقت میں لوگوں کے پاس ہوتی ہیں۔ 'آئٹم الگ کرنے والا' کی سیٹنگ 'خودکار پتہ لگانا' پر ہوتی ہے، جو نئی سطروں اور کاما کو پہچان لیتی ہے تاکہ یہ معلوم کیا جا سکے کہ آپ کی فہرست ان دونوں میں سے کون سا طریقہ استعمال کر رہی ہے، اس لیے کسی سپریڈشیٹ، چیٹ میسج یا دستاویز سے کاپی کی گئی فہرست بغیر کسی ری فارمیٹنگ کے کام کرتی ہے۔ جب آپ کے ڈیٹا میں فارمیٹس ملے جلے ہوں تو اسے 'نئی سطر' یا 'کاما' یا پھر 'اسپیس' پر لاک کریں — اور یہ ذہن میں رکھیں کہ 'اسپیس' ہمیشہ ایک شعوری انتخاب ہوتا ہے اور یہ خودکار طور پر کبھی کام نہیں کرتا، کیونکہ مکمل ناموں جیسی چیزوں میں اپنی اسپیسز موجود ہوتی ہیں اور انہیں بذریعہ ڈیفالٹ الگ کرنے سے فہرستیں ٹھیک ہونے کی بجائے خراب ہو جائیں گی۔ 'انتخاب کی تعداد' یہ طے کرتی ہے کہ کتنے اندراجات کا انتخاب کرنا ہے، جو 1 سے 100 تک ہو سکتے ہیں۔ کیا آپ 200 شرکاء میں سے 3 انعام یافتگان کا قرعہ نکال رہے ہیں؟ شرکاء کے نام پیسٹ کریں، 'انتخاب کی تعداد' کو 3 پر سیٹ کریں، اور 'بنائیں' دبائیں۔ دو کنٹرولز صرف اس وقت کام کرتے ہیں جب تعداد 2 یا اس سے زیادہ ہو اور تب تک گرے رہتے ہیں: 'تکرار سے بچیں'، جو یہ طے کرتا ہے کہ آیا ایک ہی اندراج کو دو بار منتخب کیا جا سکتا ہے، اور 'آؤٹ پٹ فارمیٹ'، جو یہ سیٹ کرتا ہے کہ منتخب کردہ نتائج کو کیسے الگ کیا جائے — 'ہر ایک نئی سطر پر'، 'اسپیس سے الگ'، یا 'کاما سے الگ'۔
'آئٹمز' باکس کے اندر بٹنوں کی ایک قطار وہ ایڈیٹنگ کرتی ہے جو ورنہ آپ کہیں اور کرتے۔ 'فائل سے لوڈ کریں۔' کسی پلین ٹیکسٹ یا CSV فائل سے براہ راست فہرست نکال لاتا ہے۔ 'شفل' باکس کے اندر موجود اندراجات کی ترتیب بدلتا ہے، 'ترتیب دیں' انہیں حروف تہجی کے لحاظ سے قدرتی اعداد کے ساتھ مرتب کرتا ہے اور دوسری بار کلک کرنے پر اسے الٹ دیتا ہے، اور 'صاف کریں' باکس کو خالی کر دیتا ہے۔ اس ٹول کو ایک کلک میں آزمانے کے لیے 'سیمپل ڈیٹا بھریں' ایک چھوٹی سی مثالی فہرست فراہم کرتا ہے، جب کہ 'پھیلائیں' باکس کو کھولتا ہے تاکہ لمبی فہرست پوری طرح نظر آئے اور 'سمیٹیں' اسے واپس ڈیفالٹ سائز میں سمیٹ دیتا ہے۔ نتیجے کے نیچے موجود، 'سب کاپی کریں' ہر انتخاب کو آپ کے کلپ بورڈ پر کاپی کرتا ہے، 'فائل میں محفوظ کریں' انہیں ایک فائل کے طور پر لکھ دیتا ہے، اور 'تاریخچہ' آپ کے پچھلے 10 قرعہ اندازی کے نتائج آپ کے براؤزر میں رکھتا ہے، اس لیے کوئی پرانا نتیجہ ایک کلک کے فاصلے پر ہوتا ہے۔
انتخاب اصل میں کیسے ہوتا ہے؟ جب آپ 'بنائیں' پر کلک کرتے ہیں تو، یہ صفحہ crypto.getRandomValues کے ذریعے براؤزر سے رینڈم ویلیوز مانگتا ہے اور انہیں آپ کی فہرست میں پوزیشنز منتخب کرنے کے لیے استعمال کرتا ہے، بجائے اس کے کہ کسی سوڈو-رینڈم JavaScript فنکشن جیسے Math.random() کا استعمال کرے۔ ایک 32-بٹ ویلیو کو کسی پوزیشن میں بدلنا ہی وہ مقام ہے جہاں نام چننے والے ٹولز خاموشی سے غلطی کرتے ہیں: ویلیو کا ماڈیولو فہرست کی لمبائی سے نکالنا ایک واضح لیکن متعصبانہ طریقہ ہے، کیونکہ جب تک کہ 2^32 کی رقم فہرست کی لمبائی سے مکمل طور پر تقسیم نہ ہو جائے، فہرست کے آغاز کے اندراجات باقیوں کے مقابلے میں قدرے زیادہ بار آتے ہیں۔ یہ خامی modulo bias کہلاتی ہے، اور یہ کوئی نظریاتی بات نہیں بلکہ قابلِ پیمائش ہے۔ اس کے برعکس یہ ٹول فہرست کی لمبائی کے سب سے بڑے درست ملٹیپل سے آگے کی کسی بھی ویلیو کو مسترد کرتا ہے اور دوبارہ قرعہ نکالتا ہے — یہ تکنیک rejection sampling کہلاتی ہے۔ اس میں چند اضافی ڈراز درکار ہوتے ہیں لیکن یہ ایک تخمینے کے بجائے درست ضمانت فراہم کرتی ہے۔ فہرست میں پوزیشن سے کچھ نہیں بدلتا: ہر قرعہ اندازی پر پہلے اور آخری اندراج کا امکان بالکل یکساں ہوتا ہے۔
'تکرار سے بچیں' کا آپشن قرعہ اندازی کی دو بالکل مختلف اقسام کو الگ کرتا ہے، اور شماریات میں دونوں کا اپنا نام ہے۔ جب یہ آن ہوتا ہے تو، ٹول Fisher-Yates الگورتھم کے ذریعے آپ کی فہرست کی ایک کاپی کو شفل کرتا ہے اور اوپر سے اندراجات لیتا ہے — یہ بالکل ایسا ہی ہے جیسے کسی ڈبے میں سے پرچیاں نکالنا اور انہیں واپس نہ رکھنا، تاکہ کوئی بھی دو بار منتخب نہ ہو اور اس سائز کے ہر گروپ کا امکان یکساں رہے۔ اسے sampling without replacement کہتے ہیں، اور انعام یافتگان، ٹیموں، اور باری کی ترتیب کے لیے آپ کو یہی چاہیے۔ جب یہ آف ہوتا ہے تو، ہر انتخاب پوری فہرست سے آزادانہ طور پر کیا جاتا ہے، اس لیے ایک ہی اندراج ایک سے زیادہ بار آ سکتا ہے — اسے sampling with replacement کہتے ہیں، جو اس وقت درکار ہوتا ہے جب ہر راؤنڈ میں ہر کوئی اہل رہے، جیسا کہ بار بار کیے جانے والے ڈراز یا فوری شماریاتی نمونے میں ہوتا ہے۔ ان دونوں طریقوں میں سے کوئی بھی ایک دوسرے سے زیادہ منصفانہ نہیں ہے؛ یہ دونوں الگ الگ سوالات کے جواب دیتے ہیں۔
ایک حقیقی منصفانہ قرعہ اندازی بظاہر منصفانہ نہیں لگتی۔ دس میں سے پانچ ناموں کا قرعہ نکالیں اور آپ اکثر دو ایسے نتائج دیکھیں گے جو اصل فہرست میں ایک دوسرے کے ساتھ تھے، یا اگر تکرار کی اجازت ہو تو ایک ہی نام کا لگاتار دو بار آنا، اور یہ سب کچھ بالکل عام بات ہے۔ ہر قرعہ اندازی آزاد ہوتی ہے: پہلے والے انتخابات کا بعد والوں پر کوئی اثر نہیں ہوتا، اور کوئی بھی شخص جیتنے کا 'حقدار' نہیں بن جاتا۔ وہ جبلت جو اس کے برعکس اصرار کرتی ہے وہ gambler's fallacy ہے، اور یہی وہ جبلت ہے جس کی وجہ سے ہم خود سے بے ترتیب انتخاب کرنے میں ناکام رہتے ہیں — اگر ہمیں خود رینڈم انتخاب کرنے کو کہا جائے تو ہم پہلے اور آخری اندراج سے گریز کرتے ہیں، کسی نام کو دہرانے سے بچتے ہیں، اور اپنے انتخابات کو اس سے کہیں زیادہ یکساں طور پر پھیلاتے ہیں جتنا کہ اتفاق سے ہوتا ہے۔ ایک ایسا نتیجہ جو مشکوک حد تک صاف ستھرا نظر آئے وہ دراصل انسان کے ہاتھ کا نشان ہے؛ اصلی بے ترتیبی ہمیشہ گچھوں کی صورت میں سامنے آتی ہے۔
یہ بے ترتیب ٹول کیوں منتخب کریں؟
- براؤزر میں انتخاب: آپ کی فہرست آپ کی ڈیوائس پر ہی پڑھی جاتی ہے اور کہیں نہیں بھیجی جاتی
- Web Crypto API بے ترتیبی: کرپٹوگرافک طور پر محفوظ، Math.random() نہیں
- کوئی modulo bias نہیں: rejection sampling ہر اندراج کا امکان برابر رکھتی ہے
- فہرست کا کوئی بھی فارمیٹ: ہر سطر پر ایک، کاما کے ساتھ، یا اسپیس کے ساتھ، بغیر ری فارمیٹ کیے
- 'تکرار سے بچیں' موڈ: فاتحین یا ٹیمیں منتخب کریں بغیر کسی کو دو بار چنے
- 1000 تک اندراجات، اور ایک ہی قرعہ اندازی میں 100 تک انتخابات
- اندر موجود لسٹ ٹولز: فائل سے لوڈ، شفل، ترتیب، صاف کریں، سیمپل ڈیٹا
- تاریخچہ اور فائل میں محفوظ کریں: کسی بھی ڈرا کا ریکارڈ رکھیں جسے ثابت کرنے کی ضرورت پڑ سکتی ہے
- لامحدود اور مفت: کوئی سائن اپ نہیں، استعمال کی کوئی حد نہیں، ہمارے سرورز پر کچھ بھی نہیں
جہاں کہیں بھی کسی انتخاب کو سوالات یا اعتراضات کا سامنا کرنا پڑتا ہو وہاں بے ترتیب انتخاب کی ضرورت پڑتی ہے۔ اساتذہ بغیر کسی جانبداری کے طلبا کو بلاتے ہیں اور کلاس کو پروجیکٹ گروپس میں تقسیم کرتے ہیں۔ سٹریمرز اور مارکیٹرز ایسے حاضرین کے سامنے گیو اوے اور ریفل ونرز کا قرعہ نکالتے ہیں جن کا نتائج پر یقین کرنا ضروری ہے۔ مینیجرز وہ کام الاٹ کرتے ہیں جن کے لیے کوئی خود سے تیار نہیں ہوتا، اور ٹیمیں یہ طے کرتی ہیں کہ ڈیمو کی ترتیب کیا ہوگی یا آن کال کون ہوگا۔ محققین آڈٹ کے لیے ریکارڈ کا ایک رینڈم نمونہ نکالتے ہیں۔ خاندان اس بحث کو ختم کرتے ہیں کہ کون سی فلم دیکھنی ہے، اور بھوکے دوستوں کا گروپ فیصلہ کرتا ہے کہ کس ریسٹورنٹ میں جانا ہے۔ ان سب میں مشترک بات یہ ہے کہ یہ ایک ایسا انتخاب ہے جسے بعد میں کوئی بھی شخص بیان کر سکتا ہے: قرعہ اندازی کرپٹوگرافک بے ترتیبی کا استعمال کرتی ہے، یہ پوری طرح آپ کی ڈیوائس پر ہی ہوتی ہے، اور اگر کوئی بعد میں اس کے بارے میں پوچھے تو 'تاریخچہ' نتائج کو محفوظ رکھتا ہے۔
کچھ واضح حدود جاننا ضروری ہیں۔ یہ ٹول آپ کی فہرست میں موجود منفرد اندراجات کی تعداد سے زیادہ نتائج نہیں نکال سکتا — تین انعام یافتگان کے لیے کم از کم تین ناموں کا ہونا ضروری ہے — اور یہ 200 حروف پر مشتمل 1000 اندراجات اور ایک ڈرا میں زیادہ سے زیادہ 100 انتخابات پر رک جاتا ہے۔ 'شفل' اور 'ترتیب دیں' لائن بہ لائن کام کرتے ہیں، اس لیے اگر کاما سے الگ کی گئی کوئی فہرست ایک ہی لائن پر پیسٹ کی گئی ہو تو اس کی ترتیب صرف اسی صورت میں بدلتی ہے جب وہ فی سطر ایک اندراج بن جائے۔ اور یہ دونوں بٹن قرعہ اندازی کے بجائے باکس کو ترتیب دیتے ہیں، جو کہ اتنا ہی منصفانہ ہوتا ہے چاہے آپ کے اندراجات کسی بھی ترتیب میں ہوں۔ ڈیزائن کے اعتبار سے ہر اندراج کا وزن بھی بالکل برابر ہوتا ہے، اس لیے اگر کسی قرعہ اندازی میں کسی ایک نام کا امکان دوگنا ہونا چاہیے تو اس نام کو فہرست میں دو بار لکھنا ضروری ہے۔ ان حدود کے اندر، اس کی گارنٹی انتہائی مضبوط ہے — آپ کی فہرست میں موجود ہر ایک اندراج کے پاس، ہر ایک قرعہ اندازی میں، بالکل یکساں امکان ہوتا ہے۔