تولید اعداد تصادفی غیرتکراری در پایتون

تولید اعداد تصادفی غیرتکراری در پایتون
فهرست مقاله [نمایش]

     

    1. مقدمه

    در زبان پایتون، تولید عدد تصادفی برای کاربردهای مختلف مانند قرعه‌کشی، تولید داده تست، شبیه‌سازی، رمزهای موقت و بازی‌ها بسیار استفاده می‌شود. اما در بسیاری از مواقع لازم است این اعداد بدون تکرار باشند تا نتیجه معتبر و قابل استفاده باشد.

    در این مقاله ابتدا با تولید اعداد تصادفی ساده در پایتون آشنا می‌شویم و سپس سراغ روش‌های تولید اعداد تصادفی غیرتکراری می‌رویم.


    2. تولید عدد تصادفی در پایتون (Random Number)

    برای تولید عدد تصادفی در پایتون می‌توان از ماژول random استفاده کرد. چند نمونه ساده:

    مثال ۱: تولید عدد صحیح تصادفی در یک بازه

    import random
    
    num = random.randint(1, 10)
    print(num)
    # خروجی: مثلا 7
    

    مثال ۲: تولید عدد اعشاری تصادفی بین 0 و 1

    import random
    
    value = random.random()
    print(value)
    # خروجی: مثلا 0.5382193821
    

    مثال ۳: انتخاب تصادفی از یک لیست

    import random
    
    items = [10, 20, 30, 40]
    choice = random.choice(items)
    print(choice)
    # خروجی: مثلا 30
    

    مشکل اصلی این است که در تولید عدد تصادفی ساده، احتمال تکراری بودن مقدارها وجود دارد و باید خودمان این موضوع را مدیریت کنیم.


    3. تولید اعداد تصادفی غیرتکراری در پایتون

    برای تولید اعداد تصادفی بدون تکرار چند روش کاربردی وجود دارد.

    روش اول: استفاده از نمونه‌گیری با random.sample

    این روش بهترین و راحت‌ترین گزینه برای دریافت چند عدد تصادفی بدون تکرار از یک بازه مشخص است.

    import random
    
    numbers = random.sample(range(1, 51), 5)
    print(numbers)
    # خروجی: مثلا [12, 47, 3, 29, 41]
    

    روش دوم: استفاده از Shuffle برای درهم‌ریزی لیست

    در این روش ابتدا لیست می‌سازیم و سپس ترتیب آن را تصادفی می‌کنیم:

    import random
    
    nums = list(range(1, 11))
    random.shuffle(nums)
    print(nums)
    # خروجی: مثلا [7, 2, 9, 1, 10, 3, 8, 5, 6, 4]
    

    روش سوم: جلوگیری از تکرار با استفاده از Set

    اگر بخواهیم یکی‌یکی اعداد تولید کنیم و مطمئن باشیم تکراری نیستند:

    import random
    
    unique_numbers = set()
    
    while len(unique_numbers) < 5:
        unique_numbers.add(random.randint(1, 20))
    
    print(unique_numbers)
    # خروجی: مثلا {3, 15, 7, 19, 12}
    

    روش چهارم: تولید یکتا با استفاده از numpy 

    اگر با اعداد زیاد یا محاسبات علمی کار دارید:

    import numpy as np
    
    nums = np.random.choice(range(1, 51), size=7, replace=False)
    print(nums)
    # خروجی: مثلا [34  2 17 45  9 28 11]
    

    4. مقایسه روش‌ها

    روشسرعتسادگینیاز به ماژول اضافیتوضیح
    random.sampleعالیبسیار سادهخیربهترین گزینه برای لیست محدود
    shuffleعالیسادهخیرمناسب وقتی کل بازه لازم است
    set + randintمتوسطمتوسطخیرکنترل تعداد دلخواه از بازه
    numpy.choiceعالیخوببلهمناسب مقیاس بزرگ

    5. نتیجه‌گیری

    اگر تعداد مشخصی عدد تصادفی بدون تکرار از یک بازه نیاز دارید، random.sample بهترین و سریع‌ترین روش است.

    اگر کل بازه را می‌خواهید به‌صورت تصادفی مرتب کنید، از shuffle استفاده کنید.

    در مواردی که می‌خواهید تدریجی عدد تولید کنید و تکراری نباشد، set کاربردی است.

    برای پروژه‌های علمی یا حجم بالا، numpy.choice گزینه مناسب‌تری است.

    اطلاعات نویسنده
    • نویسنده: تیم تحریریه باگتو

    ارسال دیدگاه

    برای افزودن دیدگاه خود، نیاز است ابتدا وارد حساب کاربری‌تان شوید


    دیدگاه کاربران

    آموزش پیشنهادی باگتو


    course image

    ستارگان سی شارپ

    9,900,000 تومان


    اطلاعات بیشتر

    course image

    آموزش سی شارپ - سطح متوسط

    1,490,000 تومان


    اطلاعات بیشتر

    }