انحياز الخلط

قارن الخلط البدائي مع Fisher–Yates بالإعدادات نفسها.

يعمل محليًا في متصفحك. لا تُرفع المدخلات ولا النتائج. عند نسخ الرابط، تتم مشاركة الإعدادات فقط.

لغات أخرى ja | en | zh-CN | es | pt-BR | id | fr | hi-IN | ar

طريقة الاستخدام (3 خطوات)

  1. اختر وضع القائمة (حسب الحجم أو قائمة مخصّصة) واضبط عدد التجارب.
  2. اضغط قارن لتشغيل الطريقتين بالإعدادات نفسها.
  3. راجع الخرائط الحرارية والإحصاءات، ثم انسخ رابط الإعدادات أو نزّل تقريرًا.

شاهد الانحياز

أداة مقارنة انحياز الخلط

التبديل البدائي يختار مؤشرًا عشوائيًا من النطاق الكامل في كل خطوة. Fisher–Yates يستخدم نطاقًا يتقلّص، فيجعل الترتيبات متساوية الاحتمال (إذا كانت randomInt موزعة بالتساوي).

هذا anti-pattern شائع في JavaScript. النتائج تعتمد على المحرك وغالبًا تكون منحازة.

ملخص

نصيحة: df للـ χ² هنا تقدير (توجد قيود). استخدمه للفهم، وليس كإثبات رسمي.

الرسوم

المفتاح: naive=أحمر، FY=أخضر، sort=أرجواني (إن فُعّل).

المنحنى هو كثافة كاي-تربيع مع df = n² - 1 (تقريبي). الخطوط العمودية تُظهر χ² المرصود.

هذا الرسم يجمع الخلايا حسب |i - j| (البعد عن القطر). قيم > 1 تعني «قريبة جدًا من الموضع الأصلي».

النتائج

يعرض كل جانب مصفوفة مواضع (العنصر i → الموضع j) مجمّعة عبر التجارب.

خلط بدائي

Fisher–Yates

الأسئلة الشائعة

هل Fisher–Yates دائمًا بلا انحياز؟
يكون بلا انحياز إذا كانت randomInt موزعة بالتساوي. تجنّب انحياز المودولو (modulo bias) عند تحويل bytes عشوائية إلى نطاق أعداد صحيحة.
لماذا لا نستخدم sort(() => random - 0.5)؟
هو منحاز ويعتمد على المحرك. يمكنك تضمينه في هذه الصفحة لتشاهد ما يحدث في متصفحك.
هل النجاح هنا يعني أمانًا تشفيريًا؟
لا. هذه الأداة توضح الانحياز الخوارزمي في الخلط. الأمان يعتمد على RNG ونموذج التهديد لديك.
كم عدد التجارب الذي يجب أن أستخدمه؟
ابدأ بـ 100k. عندما n ≤ 8، تفعيل تتبّع الترتيبات يساعد على رؤية الانحياز بشكل أوضح.

أدوات ذات صلة

حاسبات ذات صلة