اذهب إلى المحتوى

السؤال

نشر

في جزء من مشروع أعمل عليه أحتاج إلى الحصول على قيمة عشوائية تكون إما True أو False فقط، لذلك كتبت الكود التالي:

import random
value = random.randint(0, 1)
print(value)

ولكن مازلت أحتاج إلى تحويل القيمة الناتجة (1 أو 0) إلى قيمة منطقية Boolean.

هل هناك طريقة أفضل من هذه للحصول على قيمة منطقية Boolean عشوائية في بايثون Python؟

Recommended Posts

  • 1
نشر (معدل)

يمكنك استخدام مكتبة random لتوليد قيمة منطقية عشوائية بجعل الخيار محصور بين صحيح و خطأ:

import random # تحميل المكتبة
value= random.choice([True, False]) # توليد قيمة منطقية عشوائية
print(value)

يمكنك استخدام مكتبة Faker ، وهي تستخدم بشكل أساسي للاختبار ، ولكنها قادرة على توفير مجموعة متنوعة من البيانات المزيفة.

from faker import Faker # تحميل المكتبة
fake = Faker() # خلق instance
fake.pybool()  # توليد قيمة منطقية عشوائية

True

لتحميل المكتبة:

pip install Faker

 

تم التعديل في بواسطة Ayoub Souad
  • 1
نشر

لِما لا نصنع دالة مشابهة لدالة randint ؟ ونسميها randbool دالة تعمل على  تحويل القيمة الناتجة (1 أو 0) إلى قيمة منطقية Boolean  وترجع لنا قيمة إما True أو False هكذا :

from random import randint

def randbool():
    return True if randint(0, 1) == 1 else False

value = randbool()
print(value)

 

  • 1
نشر

يوجد أيضاً حزمة مفيدة، بحيث تمكنك من تحديد نسبة العشوائية، مثلاً إن أردت 60% من القيم أن تكون True و الباقي Fasle يمكنك الاعتماد عليها.

  • الحزمة PyProbs
  • الصنف Probability
  • الدالة Prob نمرر لها النسبة لعملية الفرز، و عدد العينات
from PyProbs import Probability as pr

>>> pr.Prob('50%')
False

>>> pr.Prob('50%', num=5)
[True, False, False, True, False]

 

  • 1
نشر

يمكنك إستعمال التابع getrandbits للحصول على bit (صفر أو 1) وتحويله إلى قيمة منطقية Boolean من خلال الدالة bool:

import random

# Generate Random Boolean
value = bool(random.getrandbits(1))
print(value)

هذه الطريقة أسرع بكثير من أغلب الطرق الأخرى، ومن الأفضل إستعمالها إن كنت تريد توليد الكثير من القيم العشوائية، بدلًا من إستعمال random.choice([True, False]) في كل مرة.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...