هل تحتاج إلى سحب فائز بجائزة، أو استدعاء طالب للإجابة، أو تحديد من سيغسل الأطباق؟ تقوم أداة الاختيار العشوائي المجانية هذه عبر الإنترنت بالاختيار بإنصاف من أي قائمة تقوم بلصقها. ضع مدخلاتك في مربع «العناصر» — عنصراً واحداً في كل سطر أو مفصولة بفواصل — وحدد العدد الذي تريده باستخدام حقل «العدد»، ثم اضغط على «توليد». تتطلب القائمة إدخالين على الأقل ويمكن أن تستوعب حتى 1000 عنصر، بطول يصل إلى 200 حرف لكل إدخال.
تتم كل عملية اختيار مباشرة داخل متصفحك باستخدام Web Crypto API (crypto.getRandomValues)، والتي توفر قيماً عشوائية قوية التشفير بناءً على العشوائية الأساسية لنظام متصفحك. لا تُرسل قائمتك أبداً إلى أي خادم، ولا تُسجل، ولا نراها إطلاقاً — وهذا الأمر أكثر أهمية هنا مقارنة بمعظم المولدات الأخرى، لأن ما يلصقه الأشخاص عادةً يكون قائمة عملاء، أو سجل حضور لفصل دراسي، أو مجموعة من أسماء الزملاء. يفي زر «تحميل من الملف» بنفس الوعد: حيث يقرأ متصفحك الملف ويملأ المربع محلياً، دون رفع أي بيانات إلى أي مكان.
صُممت الخيارات لتناسب القوائم التي يمتلكها الأشخاص بالفعل. يكون خيار «طريقة فصل العناصر» مضبوطاً على «الكشف التلقائي»، والذي يميّز بين الفواصل الأسطرية والفواصل العادية، ويكتشف أي الطريقتين تستخدمها قائمتك، بحيث تعمل القائمة المنسوخة من جدول بيانات أو رسالة دردشة أو مستند دون الحاجة إلى إعادة تنسيق. قم بتثبيت الخيار على «سطر جديد» أو «فاصلة» أو «مسافة» عندما تتداخل التنسيقات في بياناتك — وتذكر أن خيار «مسافة» هو دائماً خيار متعمد ولا يتم تلقائياً أبداً، لأن الإدخالات مثل الأسماء الكاملة تحتوي بطبيعتها على مسافات، وتقسيمها افتراضياً سيؤدي إلى إفساد قوائم أكثر مما سيصلح. يحدد حقل «العدد» كم عنصراً سيتم سحبه، من 1 إلى 100. هل تريد سحب ثلاثة فائزين بجوائز من أصل 200 مشارك؟ الصق أسماء المشاركين، واضبط «العدد» على 3، واضغط على «توليد». هناك أداتا تحكم ينطبقان فقط عندما يصل العدد إلى 2 أو أكثر ويبقيان غير مفعلين حتى ذلك الحين: مفتاح «بدون تكرار»، الذي يحدد ما إذا كان يمكن سحب نفس العنصر مرتين، وخيار «تنسيق الإخراج»، الذي يحدد كيفية الفصل بين الاختيارات — «كل عنصر في سطر جديد»، أو «مفصول بمسافات»، أو «مفصول بفواصل».
يؤدي صف من الأزرار داخل مربع «العناصر» مهام التحرير التي قد تضطر للقيام بها في مكان آخر. يقوم زر «تحميل من الملف» بجلب القائمة مباشرة من ملف نصي عادي أو CSV. يغير زر «خلط» ترتيب الإدخالات في المربع، بينما يقوم زر «فرز» بترتيبها أبجدياً مع ترتيب الأرقام طبيعياً، ويؤدي النقر عليه مرة أخرى إلى عكس الترتيب، في حين يقوم زر «مسح» بإفراغ المربع تماماً. يضيف زر «ملء ببيانات نموذجية» قائمة أمثلة قصيرة لتتمكن من تجربة الأداة بنقرة واحدة، بينما يوسع زر «قم بالتوسيع ليناسب المحتوى» المربع لعرض القائمة الطويلة بالكامل، ثم يعيده زر «طي إلى الحجم الافتراضي» إلى حجمه الأصلي. أسفل النتيجة، تضع ميزة «نسخ الكل» كل اختيار في الحافظة، وتقوم ميزة «حفظ إلى ملف» بكتابتها على القرص، ويحتفظ «السجل» بآخر 10 سحوبات داخل متصفحك، بحيث يكون الرجوع إلى نتيجة سابقة ممكناً بنقرة واحدة.
كيف تتم عملية الاختيار فعلياً؟ عندما تضغط على «توليد»، تطلب الصفحة من المتصفح قيماً عشوائية عبر crypto.getRandomValues وتستخدمها لاختيار مواقع ضمن قائمتك، بدلاً من الاعتماد على دالة JavaScript شبه عشوائية مثل Math.random(). إن تحويل قيمة خام 32 بت إلى موقع في القائمة هو النقطة التي تخطئ فيها أدوات الاختيار دون أن يلاحظ أحد: إن استخدام باقي القسمة (modulo) للقيمة على طول القائمة هو النهج البديهي ولكنه متحيز، لأنه ما لم يكن الطول يقسم 2^32 بدون باقٍ، فإن الإدخالات القريبة من بداية القائمة ستظهر بتردد أعلى قليلاً من البقية. يُسمى هذا العيب modulo bias (التحيز المعياري)، وهو قابل للقياس وليس مجرد نظرية. بدلاً من ذلك، تتخلص هذه الأداة من أي قيمة تتجاوز أكبر مضاعف دقيق لطول القائمة وتقوم بالسحب مرة أخرى — وهي تقنية تُعرف باسم rejection sampling (أخذ العينات بالرفض). تكلف هذه الطريقة بضع سحوبات إضافية لكنها تضمن نتيجة دقيقة بدلاً من نتيجة تقريبية. لا يغير الموقع في القائمة شيئاً: يتمتع الإدخال الأول والأخير بنفس احتمالية الظهور في كل سحب.
يفصل مفتاح «بدون تكرار» بين نوعين مختلفين تماماً من السحب، ولدى علم الإحصاء اسم لكل منهما. عندما يكون المفتاح قيد التشغيل، تقوم الأداة بخلط نسخة من قائمتك باستخدام خوارزمية Fisher-Yates وتأخذ الإدخالات من الأعلى — وهو نفس مبدأ سحب تذاكر من قبعة دون إعادتها، لذا لا يتم اختيار أي شخص مرتين، وتكون كل مجموعة بهذا الحجم متساوية الاحتمال. هذا هو أخذ العينات بدون إرجاع (sampling without replacement)، وهو ما تحتاجه لتحديد الفائزين بالجوائز، والفرق، وترتيب الأدوار. أما عندما يكون المفتاح متوقفاً، يتم إجراء كل اختيار بشكل مستقل من القائمة بأكملها، لذا يمكن أن يظهر نفس العنصر أكثر من مرة — أخذ العينات مع الإرجاع (sampling with replacement)، وهو ما تحتاجه عندما يبقى الجميع مؤهلين في كل جولة، كما هو الحال في السحوبات المتكررة أو العينة الإحصائية السريعة. لا يُعد أي من الوضعين أكثر إنصافاً من الآخر؛ فهما يجيبان على أسئلة مختلفة.
من غير المفترض إطلاقاً أن يبدو السحب العادل عادلاً. اسحب خمسة أسماء من أصل عشرة، وسترى بانتظام اختيارين كانا متجاورين في القائمة الأصلية، أو سترى نفس الاسم مرتين متتاليتين بمجرد السماح بالتكرار، وكل حالة من هذه الحالات تعتبر طبيعية جداً. كل سحب هو عملية مستقلة: لا يوجد أي تأثير للسحوبات السابقة على السحوبات اللاحقة، ولا يصبح أي شخص «مستحقاً» للفوز لأن دوره قد حان. إن الغريزة التي تصر على عكس ذلك هي مغالطة المقامر (gambler's fallacy)، وهي نفس الغريزة التي تجعلنا ضعفاء في الاختيار العشوائي بأنفسنا — فعندما يُطلب منا الاختيار بشكل عشوائي، نتجنب الإدخال الأول والأخير، ونتجنب تكرار الاسم، ونوزع خياراتنا بشكل متساوٍ أكثر بكثير مما تفعله الصدفة على الإطلاق. النتيجة المرتبة بشكل مثير للشك هي بصمة إنسان؛ العشوائية الحقيقية تنتج تكتلات.
لماذا تختار أداة الاختيار العشوائي هذه؟
- سحب في المتصفح فقط: تُقرأ قائمتك على جهازك ولا تُرسل لأي مكان
- عشوائية عبر Web Crypto API: آمنة تشفيرياً، بدلاً من Math.random()
- بدون التحيز المعياري: يضمن أخذ العينات بالرفض تكافؤ الفرص لكل عنصر
- أي شكل للقائمة: كل عنصر في سطر، أو بفواصل، أو بمسافات، دون إعادة تنسيق
- وضع «بدون تكرار»: سحب فائزين أو فرق بحيث لا يُختار شخص مرتين
- حتى 1000 عنصر، وما يصل إلى 100 اختيار في سحب واحد
- أدوات القائمة المدمجة: تحميل من ملف، خلط، فرز، مسح، بيانات نموذجية
- السجل وحفظ في ملف: احتفظ بسجل سحب قد تحتاج إلى تبريره لاحقاً
- مجانية وبلا حدود: بدون تسجيل، وبدون قيود على الاستخدام، ولا بيانات على خوادمنا
يظهر الاختيار العشوائي في كل موقف يجب أن يصمد فيه القرار أمام التشكيك. يستدعي المعلمون الطلاب للإجابة دون محاباة ويقسمون الفصل إلى مجموعات للمشاريع. يجري صانعو المحتوى والمسوقون سحوبات على الجوائز أمام جمهور يجب أن يثق بالنتيجة. يوزع المديرون المهام التي لا يتطوع لها أحد، وتحدد الفرق ترتيب العروض التوضيحية أو المناوبات. يسحب الباحثون عينة عشوائية من السجلات لمراجعتها. وتنهي العائلات الجدال حول ما يجب مشاهدته، بينما تختار مجموعة جائعة المطعم. القاسم المشترك هو اختيار يمكن لأي شخص شرحه لاحقاً: يعتمد السحب على عشوائية التشفير، ويتم بالكامل على جهازك، ويحتفظ «السجل» بالنتيجة إذا سأل عنها شخص ما لاحقاً.
هناك بعض الحدود الصريحة التي تستحق المعرفة لهذه الأداة. لا يمكن لأداة الاختيار أن تسحب إدخالات فريدة أكثر مما تحتويه قائمتك — يتطلب ثلاثة فائزين وجود ثلاثة أسماء على الأقل — وتتوقف عند 1000 عنصر، يتألف كل منها من 200 حرف كحد أقصى، مع إمكانية إجراء حتى 100 اختيار في سحب واحد. تعمل وظيفتا «خلط» و «فرز» سطراً بسطر، لذا لا يُعاد ترتيب القائمة المفصولة بفواصل والتي تم لصقها في سطر واحد إلا بعد أن يصبح كل عنصر في سطر مستقل؛ وتقوم كلتاهما بإعادة ترتيب المربع بدلاً من تغيير السحب، والذي يكون عادلاً بنفس القدر بغض النظر عن ترتيب الإدخالات. كما يحمل كل إدخال نفس الوزن بالضبط عن قصد، لذا فإن السحب الذي يجب أن يُحسب فيه اسم واحد كاسمين يتطلب إدراج ذلك الاسم في القائمة مرتين. ضمن هذه الحدود، يكون الضمان قوياً — يمتلك كل إدخال في قائمتك نفس الفرصة تماماً، في كل سحب على حدة.