Hỏi về hàm phát sinh ngẫu nhiên không trùng nhau

e làm được hàm phát sinh ngẫu nhiên rồi.
nhưng mà đề yêu cầu là phát sinh ngẫu nhiên sao cho 2 liền kề ko trùng nhau.
nhưng mà e ko biết phải nên viết thế nào. dưới đây là hàm phát sinh ngẫu nhiên của em. n
hưng hai số liền kề có trùng nhau.m.n giúp e với

#include "stdafx.h"
#include <cstdlib>
#include <ctime>
#include <iostream>
using namespace std;
#define MAX 52
//hàm tạo và xuất ramdom
void Nhap_ramdom(int a[], int n) {

    for (int i = 0; i <n; i++) {
        a[i] = 1 + rand() % (n);
    }
}
void Xuat_ramdom(int a[], int n) {
    for (int i = 0; i < n; i++) {
        cout.width(4);
        cout << a[i];
    }
    cout << endl;
}
//InterChange_Sort
void InterChange_Sort(int a[], int n) {

    for (int i = 0; i < n - 1; i++) {
        for (int j = i + 1; j < n; j++) {
            if (a[i]>a[j]) swap(a[i], a[j]);
        }
    }
}
int _tmain(int argc, _TCHAR* argv[]) {
    int a[MAX],n=13;
    cout << "quan bai cua nguoi 1:";
    Nhap_ramdom(a, n);
    InterChange_Sort(a, n);
    Xuat_ramdom(a, n);
    cout << "quan bai cua nguoi 2:";
    Nhap_ramdom(a, n);
    InterChange_Sort(a, n);
    Xuat_ramdom(a, n);
    cout << "quan bai cua nguoi 3:";
    Nhap_ramdom(a, n);
    InterChange_Sort(a, n);
    Xuat_ramdom(a, n);
    cout << "quan bai cua nguoi 4:";
    Nhap_ramdom(a, n);
    InterChange_Sort(a, n);
    Xuat_ramdom(a, n);
    return 0;
}

Em phải nói là em đang làm cái gì, lỗi ở đâu, mong muốn như thế nào chứ em post code lên thế này mà không một lời giải thích thì làm sao mà biết làm sao?


Ai giúp với :wink:

dạ. để e sửa lại. e xin lỗi

xài std::random_shuffle (include ). Khởi tạo 1 mảng tăng dần từ 1 tới n rồi shuffle nó: std::random_shuffle(a, a+n);

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?