إنشاء أعداد عشرية وأعداد صحيحة عشوائية في Python ، بما في ذلك random () و randrange () و randint ()

اعمال

يمكن إنشاء الأرقام العشوائية باستخدام وظائف عشوائية () وموحدة () و randange () و randint () في الوحدة النمطية العشوائية لمكتبة Python القياسية.

يتم تضمين الوحدة النمطية العشوائية في المكتبة القياسية ، لذلك لا يلزم تثبيت إضافي. بالطبع ، تحتاج إلى استيراده.

يتم توفير المعلومات التالية هنا.

  • random.random()(رقم النقطة العائمة بين 0.0 و 1.0)
  • random.uniform()(أي نطاق من أرقام الفاصلة العائمة)
  • إنشاء أرقام عشوائية تتبع التوزيع الطبيعي ، التوزيع الغوسي ، إلخ.
  • random.randrange()(عدد صحيح من المدى والخطوة التعسفية)
  • random.randint()(عدد صحيح في أي نطاق)
  • إنشاء قائمة بأرقام عشوائية كعناصر
    • قائمة أرقام الفاصلة العائمة العشوائية
    • قائمة أعداد صحيحة عشوائية
  • قم بتهيئة مولد الأرقام العشوائية (إصلاح أصل الرقم العشوائي)

راجع المقالة التالية حول كيفية استخراج عناصر قائمة بشكل عشوائي أو فرزها.

random.random()(رقم النقطة العائمة بين 0.0 و 1.0)

تُنشئ وظيفة الوحدة النمطية العشوائية random () رقمًا عشوائيًا للفاصلة العائمة من النوع float يتراوح بين 0.0 و 1.0.

import random

print(random.random())
# 0.4496839011176701

random.uniform()(أي نطاق من أرقام الفاصلة العائمة)

uniform(a, b)تولد وظائف هذه الوحدة النمطية العشوائية أعدادًا عشوائية من نوع تعويم رقم الفاصلة العائمة في أي من النطاقات التالية

  • a <= n <= b
  • b <= n <= a
import random

print(random.uniform(100, 200))
# 175.26585048238275

يمكن أن تكون الوسيطتان أكبر أو أصغر ؛ إذا كانت متساوية ، فإنها بطبيعة الحال ستعيد هذه القيمة فقط. القيمة المعادة هي دائما عدد عشري.

print(random.uniform(100, -100))
# -27.82338731501028

print(random.uniform(100, 100))
# 100.0

يمكن أيضًا تحديد الوسيطة على أنها عدد عائم.

print(random.uniform(1.234, 5.637))
# 2.606743596829249

يعتمد تضمين قيمة b في النطاق على التقريب التالي ، كما هو موثق.
a + (b-a) * random.random()

ما إذا كانت قيمة نقطة النهاية ب في النطاق أم لا يعتمد على تقريب النقطة العائمة في المعادلة التالية
a + (b-a) * random()
random.uniform() — Generate pseudo-random numbers — Python 3.10.2 Documentation

إنشاء أرقام عشوائية تتبع التوزيع الطبيعي ، التوزيع الغوسي ، إلخ.

تولد الدالتان العشوائية () والموحدة () أعلاه أرقامًا عشوائية موزعة بشكل منتظم ، ولكن هناك أيضًا وظائف لتوليد أرقام الفاصلة العائمة التي تتبع التوزيع التالي.

  • توزيع بيتا:random.betavariate()
  • توزع استثنائى:random.expovariate()
  • توزيع جاما:random.gammavariate()
  • التوزيع البياني:random.gauss()
  • التوزيع اللوغاريتمي الطبيعي:random.lognormvariate()
  • التوزيع الطبيعي:random.normalvariate()
  • توزيع فون ميزس:random.vonmisesvariate()
  • توزيع باريتو:random.paretovariate()
  • توزيع ويبل:random.weibullvariate()

يتم تحديد معلمات كل توزيع بواسطة الوسائط. انظر الوثائق الرسمية للحصول على التفاصيل.

random.randrange()(عدد صحيح من المدى والخطوة التعسفية)

randrange(start, stop, step)
ترجع وظيفة هذه الوحدة النمطية العشوائية عنصرًا تم اختياره عشوائيًا من العناصر التالية.
range(start, stop, step)

كما هو الحال مع range () ، يمكن حذف الوسيطات start و step. إذا تم حذفها ، ابدأ = 0 والخطوة = 1.

import random

print(list(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(random.randrange(10))
# 5

يمكن تعيين خطوة الوسيطة لتوليد عدد صحيح عشوائي زوجي أو فردي ، أو عدد صحيح عشوائي مضاعف لثلاثة.

على سبيل المثال ، إذا كانت البداية زوجية والخطوة = 2 ، فيمكن الحصول على أعداد صحيحة زوجية فقط في النطاق بشكل عشوائي.

print(list(range(10, 20, 2)))
# [10, 12, 14, 16, 18]

print(random.randrange(10, 20, 2))
# 18

random.randint()(عدد صحيح في أي نطاق)

randint(a, b)
دالة هذه الوحدة النمطية العشوائية ترجع العدد الصحيح العشوائي التالي.
a <= n <= b
randrange(a, b + 1)ما يعادل هذا ؛ لاحظ أن قيمة b مدرجة أيضًا في النطاق.

print(random.randint(50, 100))
# print(random.randrange(50, 101))
# 74

إنشاء قائمة بأرقام عشوائية كعناصر

في هذا القسم ، سنشرح كيفية استخدام الوحدة العشوائية للمكتبة القياسية لإنشاء قائمة بأرقام عشوائية كعناصر.

قائمة الأرقام العشوائية بعوم الفاصلة العائمة

لإنشاء قائمة تكون عناصرها أرقامًا عشوائية للفاصلة العائمة ، اجمع بين الدالتين العشوائية () والوحدة () مع تدوين قائمة الفهم.

import random

print([random.random() for i in range(5)])
# [0.5518201298350598, 0.3476911314933616, 0.8463426180468342, 0.8949046353303931, 0.40822657702632625]

في المثال أعلاه ، يتم استخدام range () ، ولكن القوائم و tuple ممكنة أيضًا للعدد المطلوب من العناصر. لمزيد من التفاصيل حول List Comprehensions ، يرجى الرجوع إلى المقالة التالية.

قائمة أعداد صحيحة كثافة العمليات العشوائية

عند إنشاء قائمة تكون عناصرها أرقامًا عشوائية صحيحة ، فإن الجمع بين randange () و randint () أعلاه مع تدوين list comprehension قد ينتج عنه قيم مكررة.

print([random.randint(0, 10) for i in range(5)])
# [8, 5, 7, 10, 7]

إذا كنت تريد عمل تسلسل عشوائي من الأعداد الصحيحة دون تكرار ، فاستخرج عناصر النطاق () بنطاق عشوائي باستخدام random.sample ().

print(random.sample(range(10), k=5))
# [6, 4, 3, 7, 5]

print(random.sample(range(100, 200, 10), k=5))
# [130, 190, 140, 150, 170]

لمزيد من المعلومات حول random.sample () ، يرجى الرجوع إلى المقالة التالية.

قم بتهيئة مولد الأرقام العشوائية (إصلاح أصل الرقم العشوائي)

من خلال إعطاء عدد صحيح تعسفي لبذرة وظيفة الوحدة العشوائية () ، يمكن إصلاح العدد الأولي العشوائي ويمكن تهيئة مولد الأرقام العشوائية.

بعد التهيئة بنفس الأصل ، يتم دائمًا إنشاء القيمة العشوائية بنفس الطريقة.

random.seed(0)
print(random.random())
# 0.8444218515250481

print(random.random())
# 0.7579544029403025

random.seed(0)
print(random.random())
# 0.8444218515250481

print(random.random())
# 0.7579544029403025