🎲 کامپیوتر چطوری عدد تصادفی میسازه؟
فرض کن میخوای با پایتون یه تاس بندازی. مینویسی:
ممکنه خروجی
دفعهی بعد
اما یه سؤال جالب:
کامپیوتر که خودش شانس نداره، پس این عددها رو از کجا میاره؟ 🤔
🧠 اول یه تفاوت مهم
وقتی یه تاس واقعی میندازی، نتیجه به چیزهایی مثل سرعت پرتاب، زاویه و برخورد با سطح بستگی داره. این عوامل رو نمیتونی دقیق پیشبینی کنی.
اما کامپیوتر معمولی، اگر فقط به خودش و یک الگوریتم ریاضی تکیه کنه، میتونه عددهایی تولید کنه که تصادفی به نظر میرسن، ولی در اصل قابلتکرارن.
به اینها میگیم:
Pseudo-Random Numbers
یعنی اعداد شبهتصادفی.
🎯 حالا الگوریتم چطور کار میکنه؟
فرض کن یه دستگاه داریم که یه عدد اولیه میگیره و هر بار عدد بعدی رو از روی قبلی میسازه:
مثلاً یه الگوریتم خیلی ساده میتونه این باشه:
علامت
پس اگر عدد اولیه
میبینی؟ 😮
هیچ شانسی در کار نیست!
الگوریتم فقط داره محاسبه میکنه، ولی خروجیها میتونن شبیه عددهای تصادفی به نظر برسن.
🐍 حالا همین ایده رو با پایتون ببینیم
خروجی:
این یه الگوریتم آموزشی سادهشده است، نه الگوریتم واقعی پایتون؛ فقط میخوایم ایده رو ببینیم.
پس Seed چیه؟
یعنی نقطهی شروع الگوریتم
اگر Seed رو ثابت کنیم، دنبالهی عددها هم ثابت میشه:
حالا همین کد رو دوباره اجرا کن؛ همون سه عدد رو میبینی!
چرا؟ چون کامپیوتر از همون نقطهی شروع، همون محاسبات رو دوباره انجام میده.
> تصادفی به نظر میرسه، ولی قابلتکراره. 🧠
🔐 یه نکتهی خیلی مهم
این نوع تصادفیسازی برای بازی، شبیهسازی و انتخابهای معمولی کاربردیه.
اما برای رمز عبور، توکن امنیتی و کارهای حساس نباید از
پس پشت خیلی از چیزهایی که تصادفی به نظر میرسن، یه الگوریتم دقیق نشسته! 🐍
#NovaCode #Python #Programming #ComputerScience #RandomNumbers #PythonTutorial #AI
فرض کن میخوای با پایتون یه تاس بندازی. مینویسی:
import random
print(random.randint(1, 6))
ممکنه خروجی
4 باشه.دفعهی بعد
2، بعد 6...اما یه سؤال جالب:
کامپیوتر که خودش شانس نداره، پس این عددها رو از کجا میاره؟ 🤔
🧠 اول یه تفاوت مهم
وقتی یه تاس واقعی میندازی، نتیجه به چیزهایی مثل سرعت پرتاب، زاویه و برخورد با سطح بستگی داره. این عوامل رو نمیتونی دقیق پیشبینی کنی.
اما کامپیوتر معمولی، اگر فقط به خودش و یک الگوریتم ریاضی تکیه کنه، میتونه عددهایی تولید کنه که تصادفی به نظر میرسن، ولی در اصل قابلتکرارن.
به اینها میگیم:
Pseudo-Random Numbers
یعنی اعداد شبهتصادفی.
🎯 حالا الگوریتم چطور کار میکنه؟
فرض کن یه دستگاه داریم که یه عدد اولیه میگیره و هر بار عدد بعدی رو از روی قبلی میسازه:
مثلاً یه الگوریتم خیلی ساده میتونه این باشه:
عدد بعدی = (عدد قبلی × 5 + 1) % 16
علامت
% یعنی باقیماندهی تقسیم.پس اگر عدد اولیه
3 باشه:عدد اول: 3
عدد بعدی: (3 × 5 + 1) % 16 = 0
عدد بعدی: (0 × 5 + 1) % 16 = 1
عدد بعدی: (1 × 5 + 1) % 16 = 6
عدد بعدی: (6 × 5 + 1) % 16 = 15
میبینی؟ 😮
هیچ شانسی در کار نیست!
الگوریتم فقط داره محاسبه میکنه، ولی خروجیها میتونن شبیه عددهای تصادفی به نظر برسن.
🐍 حالا همین ایده رو با پایتون ببینیم
def pseudo_random(seed, count):
numbers = []
for _ in range(count):
seed = (seed * 5 + 1) % 16
numbers.append(seed)
return numbers
print(pseudo_random(3, 10))
خروجی:
[0, 1, 6, 15, 12, 13, 2, 11, 8, 9]
این یه الگوریتم آموزشی سادهشده است، نه الگوریتم واقعی پایتون؛ فقط میخوایم ایده رو ببینیم.
پس Seed چیه؟
یعنی نقطهی شروع الگوریتم
اگر Seed رو ثابت کنیم، دنبالهی عددها هم ثابت میشه:
import random
random.seed(42)
print(random.randint(1, 6))
print(random.randint(1, 6))
print(random.randint(1, 6))
حالا همین کد رو دوباره اجرا کن؛ همون سه عدد رو میبینی!
چرا؟ چون کامپیوتر از همون نقطهی شروع، همون محاسبات رو دوباره انجام میده.
> تصادفی به نظر میرسه، ولی قابلتکراره. 🧠
🔐 یه نکتهی خیلی مهم
این نوع تصادفیسازی برای بازی، شبیهسازی و انتخابهای معمولی کاربردیه.
اما برای رمز عبور، توکن امنیتی و کارهای حساس نباید از
random معمولی استفاده کرد؛ چون برای امنیت طراحی نشده.پس پشت خیلی از چیزهایی که تصادفی به نظر میرسن، یه الگوریتم دقیق نشسته! 🐍
#NovaCode #Python #Programming #ComputerScience #RandomNumbers #PythonTutorial #AI
❤5