Infinite Loop Of Math²
145 subscribers
9 photos
6 videos
1 file
20 links
Where math lies☝️
اگر عاشق ایده‌ها و فکت‌های ریاضی و کد هستی به ما ملحق شو!
لینک گپ:https://t.me/MathAndCodeLovers
راه ارتباطی:
@Pania_theinkdrinker

بات برای ارسال پیام ناشناس:
@ilommathbot
Download Telegram
پارت۲
(پارت۱)
بریم ببینیم زبان‌های برنامه نویسی مختلف برای حل مشکل سوگیری باقیمانده چیکار کردن. در واقع همه‌شون از همون ریاضیات استفاده می‌کنن، فقط به شکل و قالب خودشون🥸 اینجا مثال ما، تولید یک رمز ۵ کرکتری از حروف و اعداده.
import random
import string

def generate_random_string(length=5):
# بانک حروف (شامل حروف بزرگ، کوچک و اعداد)
chars = string.ascii_letters + string.digits

result = ''.join(random.choices(chars, k=length))
return result

print(generate_random_string())

👆اینجا در واقع تابع random.choices داره همون کار طرد کردن و ایجاد منطقه امن رو انجام میده.

import java.util.Random;

public class Main {
public static void main(String[] args) {
String chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
Random random = new Random();
StringBuilder result = new StringBuilder();

for (int i = 0; i < 5; i++) {
// این تابع عدد 62 را می‌گیره و یک عدد عادلانه بین 0 تا 61 می‌ده
int randomIndex = random.nextInt(62);
result.append(chars.charAt(randomIndex));
}

System.out.println(result.toString());
}
}

👆برای جاوا هم تابع nextInt وظیفه طرد کردن و چک کردن محدوده امن رو داره
// بانک کرکتر‌ها
    const char chars[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    //موتور تولید اعداد رندوم مثلاً اعداد خیلی بزرگ
    thread_local mt19937 gen(random_device{}());
//توزیع اعداد تو بازه مورد نظر
    uniform_int_distribution<int> dist(0, 61);
//دادن مقدار اولیه 0 به هر آرایه رشته ۵ حرفی
    string result(5, '0');
//جایگذاری با کرکتر‌های توی بانک
    for (char &c : result)
    {
        c = chars[dist(gen)];
    }
    return result;

برای cpp عملاً توزیع رو داریم انجام می‌دیم. ما ۶۲ تا کرکتر داریم، که چون شماره درایه‌های آرایه بانک حروف، از ۰ شروع میشه، پس میشه از 0 تا 61. موتور تولید اعداد رندوم( باید حتما لایبرری random رو اضافه کرده باشید) اعداد بزرگی تولید می‌کنه که تو این بازه نیستن، پس باز هم با همون روش میاد و زوری اعداد رو میندازه تو این بازه، ولی حواسش هست که از سوگیری جلوگیری کنه و این دقیقا وظیفه این قسمته:
uniform_int_distribution<int> dist(0, 61);

به این ترتیب اعداد بدون سوگیری میفتن تو این بازه، و در ادامه هر عدد رندومی که انتخاب بشه از این توزیع، در اصل نشون دهنده یه درایه از آرایه بانک حروف و اعداده، که اون کرکتر با توجه به شماره‌ش انتخاب، و جایگذاری میشه در رشته نهایی🥸
🔎خلاصه کار: همه‌شون از یه قانون ساده ریاضی پیروی می‌کنن
#comp_sci
#Algorithm
#code
#math
@mathloopinfinite
❤8