نوشته های دکتر خودم

نوشته های دکتر خودم

اینجا من یعنی خودم در مورد خودم و خود خودم می نویسم
نوشته های دکتر خودم

نوشته های دکتر خودم

اینجا من یعنی خودم در مورد خودم و خود خودم می نویسم

ساختن عدد تصادفی در سی++

 * امروز از سر بیکاری و البته سوال ذهنی که از قبل برام بود، یه تیکه کد نوشتم که عدد تصادفی تولید میکنه، البته با استفاده از توابع خود سی++. کل نکته این بود که برای داشتن اعداد تصادفی متفاوت، در هر بار اجرای برنامه، باید یه seed متفاوت به srand داد. همین :)

 * سورس این برنامه رو میشه در ادامه مطلب با کلیک بروی اینجا دید. نکته‌ای که هست اینه که این برنامه میاد چندتا عدد تولید میکنه، بعد نمودار میله‌ای پراکندگی اعداد بین ۰ و ۹ رو رسم میکنه. من صبح کشف کردم که توزیع این اعداد یکنواخت هست که بعد فهمیدم واقعا هم اینطور هست! بعد اینکه یکی از دوستان بهم گفت که این اعداد کاملا تصادفی نیستند! به این‌ها میگن اعداد شبه‌تصادفی. بعد یکی دیگه از دوستان وقتی سوال کردم که چطور میشه توزیع رو نرمال کرد گفت که با چندبار تولید کردن توزیع یکنواخت و جمع کردن اونها و تقسیم بر تعداد کردن و در آخر کم‌کردن یکی از میانگین‌ها که با استفاده از قضیه حد مرکزی این به توزیع نرمال میل میکنه :) این باشه برای بعدا که دوباره حس زندگی نبود :)

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <vector>
using namespace std;

void dispVect(vector<int> vect)
{
    int i;
    double j,f,div;
   
    for(i=0; i<vect.size();i++)
    {
        if(vect[i])
        {
            div = vect[i];
            break;
        }
    }
   
    for(i=0;i<vect.size();i++)
    {
        cout << i << ": " << vect[i] << " ";
        f = (double)vect[i] / div;
        for(j = 0; j<f; j+=0.02)
        {
            cout << "-";
        }
        cout << endl;
    }
}

int main(int argc, char **argv)
{
    int num , i , top;
    vector<int> numbers(10,0);
   
    srand(time(NULL));
   
    if(argc > 1)
        top = atoi(argv[1]);
    else
        top = 10;
   
    for(i=0;i<top ; i++)
    {
        num = rand() % 10;
        numbers[num]++;
    }
   
    dispVect(numbers);
    cout << endl;
}

 * اینم یه عکس از اجرای برنامه:


نظرات 1 + ارسال نظر
بهزاد جمعه 16 تیر‌ماه سال 1391 ساعت 06:12 ب.ظ http://behzadfarhadi.mihanblog.com

دکی فردا امتحان دارم دارم میخونم منم همچین سوالی قبلا از استادمون کردم ولی نه اون فهمید چی گفت نه من نفهمیدم چی نگفت
برا همین
صبررررررررررررررررررررر اله
میلم زودی:دی

با این توزیع نرمال خیلی کارا میشه کرد

ببین تو رمز گشایی که بجا یه کلمه یه کاراکتر دیگه استفاده میشه زودی شکسته میشه چون توزیع نرمال نی
یعنی طرف نگا کنه مثلا حرف ای انگلیسی از همه بیشتر تو متن میا بعد ببین اون کاراکتر بیشتر حدث میزنه که اون کاراکتر همون ای میباشیه
پس این اعداد تصادفی و نمال کردن توزیعشون میتونه کمک زیادی به زمز نگاری بکنه
احسنتتتتتتتتتتتتتتتتت به این هوش و ذکاوتی که داری
کچل کردی مغزت کار میکنه بیشر از قبل

wooooooooow!!!
میتونی یه کد اضاف کنی که بگه چند درصد از این عددا اول هستن؟

واو!
پسر تو جقدر مطالعه داری!! خوشم میاد از این اخلاقت! :-*

پیشنهاد خوبیه، روش فکر میکنم. البته کار نداری که! دیگه خودت میدونی، یه چک کردن ساده‌س.

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد