Em có một bài tập muốn tham khảo cách làm của mọi người ạ!
Bài tập như sau : Nhập dãy số từ 1-9 , xét lần lượt từng số trong dãy với mỗi lần xét là chọn một số ngẫu nhiên trong dãy và đổi vị trí của số đó với số đang xét. Đưa kết quả ra màn hình .
Mong được mọi người giúp đỡ ạ!!!
Hỏi về một bài tập dùng hàm rand() trong c
Ồ, không hiểu gì luôn.
Có ví dụ IN/OUT không bạn?
Em chào anh!
Có in/out ạ.
Ban đầu nhập dãy số từ 1-9. Xét từng số từ số thứ nhất đến số thứ 9 với mỗi lần xét là chọn một số ngẫu nhiên trong dãy và đổi vị trí số đó với số đang xét. Đưa ra dãy mới sau khi chạy trương trình.
Ví dụ bắt đầu xét là số thứ nhất trong dãy ( hiện là số 1 ) chọn ngẫu nhiên số 8 ( đoạn này dùng hàm rand() ) sau đó đổi chỗ số 8 và số 1 dãy sẽ thành : 8 2 3 4 5 6 7 1 9 .
Fisher-Yates shuffling à
còn vị trí 2, 3, … thì sao 
Dạ sau khi xét xong số thứ nhất thì đến số thứ 2 cũng xét tương tự như vậy. Đưa ra kết quả là một dãy đã đổi loạn vị trí các số. Em đã thử viết chương trình nhưng k được. Em bập bẹ thôi nên mông lung lắm ạ. Mong được Bác giúp đỡ!!!
For i:1-9{
int temp = rand();
Đổi chỗ a[i] và temp;
}
Như vậy thì chỉ là demo kĩ thuật thôi chứ shuffling chuẩn ko phải vậy 
// pseudo
Array a = [1..9]; // range literal, viết tắt
visualize(a, -1, -1); // dành cho bạn đọc :D
srand(time(NULL)); // ko thể quên
for i = 0 to 8 do begin
index_to_swap = rand()*9.0/RAND_MAX; // nhân trước sẽ đúng hơn.
visualize(a, i, index_to_swap);
swap(a[i], a[index_to_swap]);
end;
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?