Sinh dãy ngẫu nhiên tăng trong C++

Việc sinh ra một dãy ngẫu nhiên trong C++ là một điều cần thiết khi chúng ta cần kiểm tra kế quả của chương trình. Nhưng không phải bất kỳ trường hợp nào bạn cũng sinh ra một dãy số ngẫu nhiên lớn nhỏ theo một thứ tự bất kỳ. Trong nhiều trường hợp ta sẽ cần phải tạo ra các dãy số ngẫu nhiêu tăng, bài viết này sẽ giúp bạn tạo ra điều đó.

Sinh ngẫu nhiên tăng

1. Yêu cầu đặt ra: Sinh ngẫu nhiên n phần tử được sắp không giảm (tăng) cho mảng nguyên a.

2. Thuật toán

–  Sinh ngẫu nhiên phần tử đầu tiên: a[1] = rand() % 100;

– Từ phần tử thứ hai trở đi, trị được sinh bằng trị của phần tử sát trước nó cộng thêm một đại lượng ngẫu nhiên:

(i = 2..n):  a[i] = a[i – 1] + (rand() %100),
do đó a[i] >= a[i – 1]

3. Một source code mẫu minh họa việc sinh dãy ngẫu nhiên tăng trong C++

–  Source code được viết trên Dev C++

// Sinh day ngau nhien tang trong C++
// thanhcuong.wordpress.com

#include <cstdlib>
#include <iostream>
#include <ctime>

using namespace std;

void view(int a[], int n)
{
     cout<<"\n Day ngau nhien tang duoc sinh ra la"<<endl;
     for(int i = 0; i < n; i++)
     {
             cout<< a[i]<<"  ";
     }
     cout<<"\n";
}

int main()
{
    int a[1000];
    int n;

    cout<<"Nhap vao so phan tu cua day:  ";
    cin>>n;
    if(n <= 0)
    {
         cout<<"So vua nhap khong hop le.";
         return 0;
    }

    srand(time(0));
    a[0] = (rand() % 10);
    for(int i = 1; i < n; i++)
    {
            a[i] = a[i -1] + (rand() % 1000);
    }
    view(a,n);

    system("pause");
    return 0;
}

– Kết quả chương trình khi thực thi như hình dưới đây:

image

–  Click vào đây để Download source code chương trình sinh dãy số ngẫu nhiên trên C++

(Tham khảo cplusplus.com)

Advertisements

About thanhcuong1990

Handsome and talent!! ^^
This entry was posted in C++. Bookmark the permalink.

3 Responses to Sinh dãy ngẫu nhiên tăng trong C++

  1. Nguyễn Hữu Tâm says:

    đoạn code này của mình chạy trên TC 3.0, mình sử dụng hàm random(1000) để sinh các số ngẫu nhiên, nhưng mà nó lại sinh ra các số giống nhau, mong bạn giải thích

    #include
    #include
    #include
    #include
    void main()
    {
    int i,a;
    for(i=1;i<=4;i++)
    {
    randomize();
    printf("%d ",random(1000));
    }
    fclose(f);
    getch();
    }

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s