Hàm random chuỗi trong C++ | Laptrinhcanban.com

Hàm random chuỗi trong C++

Cùng tìm hiểu về hàm random chuỗi trong C++. Bạn sẽ học được cách tạo ra một hàm random để tạo chuỗi ký tự ngẫu nhiên trong C++ sau bài học này.

Hàm random chuỗi trong C++

Để tạo ra một số ngẫu nhiên trong C++, chúng ta có hàm rand() trong thư viện chuẩn. Tuy nhiên thật tiếc là trong C++ lại không tồn tại hàm random chuỗi nào để tạo chuỗi ký tự ngẫu nhiên cả.

Do đó, chúng ta sẽ cần phải tự tạo ra hàm random chuỗi trong C++ để có thể tạo chuỗi ký tự ngẫu nhiên. Và chúng ta cũng cần ứng dụng hàm rand() trong hàm tự tạo này.

Ý tưởng ở đây là, chúng ta chuẩn bị sẵn một dãy ký tự, sau đó tiến hành lấy ký tự tại một vị trí ngẫu nhiên trong dãy đó, và vị trí ngẫu nhiên này sẽ được tạo ra bởi hàm rand().

Cụ thể chúng ta viết hàm như sau:

#include <iostream>
#include <cstdlib>
#include <time.h>
#include <cstring>
using namespace std;

void rand_text(int length, char *result) {
int i, rand_int;
char char_set[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&quot";

for (i = 0; i <length; i++) {
result[i] = char_set[rand() % sizeof(char_set)];
}
result[length] = 0;
}

int main(){
cout << "Nhap đo dai chuoi: ";
int length;
cin >> length;

char result[length + 1];
srand(time(NULL));

rand_text(length, result);
cout << result;
}

Kết quả lần 1:

Nhap đo dai chuoi: 5
XtoI

Kết quả lần 2:

Nhap đo dai chuoi: 5
v9DBu

Chú ý ở trên, chúng ta sử dụng hàm rand() kết hợp với cả hàm srand() và time() trong dòng lệnh srand(time(NULL)); nhằm khắc phục nhược điểm của hàm rand() và tạo ra các kết quả khác nhau trong các lần thực thi chương trình.

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về hàm random chuỗi trong C++ rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành với các ví dụ sau đây.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về C++ trong các bài học tiếp theo nhé.

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.