NumPy: الأعداد العشوائية
آخر تحديث: 2026-08-26
1. ما ستتعلمه
- ❶ واجهة default_rng Generator الحديثة
- ❷ التوزيعات الشائعة: منتظم، طبيعي، صحيح، اختيار
- ❸ البذر لإعادة الإنتاجية
- ❹ أخذ العينات العشوائية: مع/بدون استبدال
- ❺ واجهة API القديمة مقابل الجديدة
2. قصة
تدير أليس محاكاة مونت كارلو لنموذج مالي. تحصل على نتائج مختلفة في كل مرة — من المستحيل التصحيح. يُظهر لها بوب: "استخدم default_rng(42) — نفس البذرة تُنتج دائماً نفس التسلسل. صَحّح بالبذرة، وانشر بدونها." تصلح أليس بذرتها، وتجد الخطأ في 5 دقائق.
3. واجهة Generator الحديثة
(1) إنشاء Generator
`python import numpy as np
الطريقة الحديثة (موصى بها)
rng = np.random.default_rng(42) # بذرة = 42 لإعادة الإنتاجية
4. الطريقة القديمة (قديمة)
np.random.seed(42) `
(2) التوزيعات الشائعة
`python rng = np.random.default_rng(42)
print(rng.random(3)) # 3 أعداد منتظمة [0, 1) print(rng.normal(0, 1, 3)) # 3 أعداد طبيعية معيارية print(rng.integers(0, 10, 5)) # 5 أعداد صحيحة [0, 10) print(rng.uniform(0, 10, 3)) # 3 أعداد منتظمة [0, 10) `
` ext
المخرجات: قم بتشغيل NumPy 2.x في بيئة Python المحلية لديك لرؤية مخرجات ndarray. خادم Piston لا يحتوي على NumPy مثبت مسبقاً — قم بتثبيته محلياً (pip install numpy) وقارن. قد تختلف القيم الفعلية حسب إصدار NumPy والبذرة العشوائية. `
(3) أخذ العينات العشوائية
`python rng = np.random.default_rng(42) data = np.arange(10)
5. مع الاستبدال
sample = rng.choice(data, size=5, replace=True)
6. بدون استبدال
sample2 = rng.choice(data, size=5, replace=False)
7. الخلط
rng.shuffle(data) # خلط في المكان `
` ext
المخرجات: قم بتشغيل NumPy 2.x في بيئة Python المحلية لديك لرؤية مخرجات ndarray. خادم Piston لا يحتوي على NumPy مثبت مسبقاً — قم بتثبيته محلياً (pip install numpy) وقارن. قد تختلف القيم الفعلية حسب إصدار NumPy والبذرة العشوائية. `
▶ مثال: توليد التوزيعات العشوائية (الصعوبة ⭐)
`python import numpy as np
rng = np.random.default_rng(42)
uniform = rng.random(5) normal = rng.normal(0, 1, 5) integers = rng.integers(1, 100, 5)
print("Uniform [0,1):", uniform) print("Normal N(0,1):", normal) print("Integers 1-99:", integers) `
المخرجات:
ext Uniform [0,1): [0.77395605 0.43887844 0.85859792 0.69736803 0.09417735] Normal N(0,1): [-0.45938412 -0.19865146 0.1113586 -1.00408446 2.02558468] Integers 1-99: [79 64 66 81 96]
▶ مثال: أخذ العينات العشوائية مع وبدون استبدال (الصعوبة ⭐⭐)
`python import numpy as np
rng = np.random.default_rng(42) data = np.arange(20)
8. مع الاستبدال — يمكن أن يظهر نفس العنصر عدة مرات
with_repl = rng.choice(data, size=10, replace=True) print("With replacement:", with_repl)
9. بدون استبدال — جميع العناصر فريدة
without_repl = rng.choice(data, size=10, replace=False) print("Without replacement:", without_repl)
10. خلط في المكان
rng.shuffle(data) print("Shuffled data:", data) `
المخرجات:
ext With replacement: [ 6 19 9 12 6 15 0 7 3 14] Without replacement: [13 10 8 11 5 1 9 16 18 4] Shuffled data: [ 8 7 13 10 18 3 15 5 14 16 0 9 2 1 11 17 12 19 6 4]
▶ مثال: التسلسلات القابلة لإعادة الإنتاج بالبذور (الصعوبة ⭐)
`python import numpy as np
11. نفس البذرة = نفس التسلسل
rng1 = np.random.default_rng(123) rng2 = np.random.default_rng(123)
print("rng1:", rng1.random(4)) print("rng2:", rng2.random(4))
12. بذرة مختلفة = تسلسل مختلف
rng3 = np.random.default_rng(456) print("rng3:", rng3.random(4)) `
المخرجات:
ext rng1: [0.18701985 0.68208779 0.60135938 0.51034031] rng2: [0.18701985 0.68208779 0.60135938 0.51034031] rng3: [0.59831648 0.72572267 0.04819845 0.35980509]
❓ أسئلة شائعة
📖 ملخص
- استخدم p.random.default_rng(seed) لواجهة Generator الحديثة
- التوزيعات الشائعة: andom، ormal، integers، uniform، choice
- ابذر RNG الخاص بك للحصول على نتائج قابلة لإعادة الإنتاج
- shuffle يُعدّل في المكان؛ choice يأخذ عينات مع/بدون استبدال
p.random.seed() القديم لا يزال يعمل لكنه قديم — فضّل default_rng
📝 تمارين
-
مبتدئ (الصعوبة ⭐): استخدم default_rng(42) لتوليد 10 أعداد عشرية عشوائية، و10 أعداد صحيحة عشوائية (0-100)، و10 أعداد من توزيع طبيعي. اطبعها.
-
متوسط (الصعوبة ⭐⭐): ولّد 1000 رقم عشوائي من توزيع طبيعي. احسب متوسطها وانحرافها المعياري. تحقق من أنهما تقريباً 0 و 1.
-
متقدم (الصعوبة ⭐⭐⭐): استخدم ng.choice مع وبدون استبدال لأخذ عينة من 10 عناصر من مجموعة بيانات من 100. اشرح الفرق ومتى تستخدم كل منهما.