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