STDIO
Tìm kiếm gần đây
    • 0

    Giải Thuật Sinh Chuỗi Ngẫu Nhiên

    Giải thuật sinh chuỗi ngẫu nhiên trong C/C++ phục vụ việc sinh Password hoặc mã dự thưởng.
    24/05/2017
    15/09/2020
    2 phút đọc
    Giải Thuật Sinh Chuỗi Ngẫu Nhiên

    Giải thuật

    Xác định tập hợp các kí tự và số muốn xuất hiện trong chuỗi ngẫu nhiên. Trong bài viết này sẽ chọn tập hợp (R) gồm các kí tự a-z, A-Z và 0-9.

    Chọn 1 ký tự ngẫu nhiên trong R: việc lấy ngẫu nhiên một kí tự thuộc R thực chất là chọn ngẫu nhiên một vị trí (index) trong tập R. Giả sử tập R có n phần tử, mỗi phần tử được đánh số từ 0 → (n - 1), suy ra miền giá trị của index là [0 ... (n – 1)].

    Tùy vào độ dài chuỗi ngẫu nhiên cần sinh theo yêu cầu (n ký tự) mà lặp lại n lần chọn ký tự ngẫu nhiên như trên.

    Hiện thực

    Hàm sinh chuỗi ngẫu nhiên

    void RandomStringGenerator(char* code, int codeLength)
    {
        char* box = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefjhijklmnopqrstuvwxyz0123456789";
        int boxLength = strlen(box);
        
        for (int i = 0; i < codeLength; i++)
        {
            code[i] = box[rand() % boxLength];
        }
        code[codeLength] = '\0';
    }

    Trong đó:

    • code là mảng để lưu chuỗi ngẫu nhiên được sinh ra.
    • codeLength là tham số chỉ định độ dài chuỗi ngẫu nhiên mong muốn.
    • box mang ý nghĩa là những ký tự sẽ xuất hiện trong chuỗi ngẫu nhiên. Ví dụ box có 5 ký tự abcde thì kết quả của code được sinh ra chỉ nằm trong phạm vi các ký tự này. Nếu bạn muốn chuỗi trả về có thêm các ký tự đặc biệt như !@#$%^..., bạn có thể tự thêm vào chuỗi box.

    Code chương trình sinh chuỗi đầy đủ và cách sử dụng

    Cho cả 2 trường hợp cấp phát động và cấp phát tĩnh cho chuỗi ngẫu nhiên.

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <time.h>
    
    void RandomStringGenerator(char* code, int codeLength)
    {
    	char* box = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefjhijklmnopqrstuvwxyz0123456789";
    	int boxLength = strlen(box);
    	
    	for (int i = 0; i < codeLength; i++)
    	{
    		code[i] = box[rand() % boxLength];
    	}
    	code[codeLength] = '\0';
    }
    
    int main()
    {
    	srand(time(0));
    
    	int length1 = 6;
    	char code1[6 + 1];
    	RandomStringGenerator(&code1[0], length1);
    	printf("%s\n", code1);
    
    	int length2 = 8;
    	char* code2 = new char[length2 + 1];
    	RandomStringGenerator(code2, length2);
    	printf("%s\n", code2);
    	delete[]code2;
    
    	return 0;
    }

    Hoặc có thể download code đầy đủ giải thuật sinh chuỗi ngẫu nhiên tại đây.

    Tham khảo

    Random Số Trong C++

    Modern C++

    Modern C++

    STDIO Training - Đào Tạo Lập Trình C++.

    Sản phẩm

    Đề xuất

    Random Số Trong C++

    Random Số Trong C++

    Hướng dẫn cách sinh ra số ngẫu nhiên và số ngẫu nhiên trong 1 khoảng xác ...

    Amy Lê

    16/06/2015

    Giải Thuật Là Gì?

    Giải Thuật Là Gì?

    Giải thuật - thuật toán là một tập hợp hữu hạn các thao tác được thực ...

    Giải Thuật Lập TrìnhKiến thức

    25/08/2015

    Khám phá thêm

    Phân Biệt HTTP và HTTPS

    Phân Biệt HTTP và HTTPS

    Tìm hiểu sự khác nhau giữa HTTP và HTTPS.

    Cyber SecurityCơ bản

    03/05/2015

    Thuật Giải A*

    Thuật Giải A*

    Giới thiệu và hướng dẫn hiện thực thuật giải A* - A-star tìm kiếm đường ...

    Giải Thuật Lập Trình

    05/12/2015

    C# Script - Lớp Random

    C# Script - Lớp Random

    Giới thiệu và hướng dẫn thao tác với lớp Random trong Unity để tạo ra ...

    Lập Trình GameUnity

    07/08/2015

    Naive String Search - Tìm Kiếm Kiểu Thơ Ngây

    Naive String Search - Tìm Kiếm Kiểu Thơ Ngây

    Hướng dẫn tìm kiếm một chuỗi kí tự trong một đoạn văn bản bằng giải ...

    Giải Thuật Lập TrìnhGiải thuật tìm kiếm

    16/08/2015

    Mã Hóa Base64

    Mã Hóa Base64

    Base64 không phải là một thuật toán mã hóa và trong mọi trường hợp, nó ...

    BugsỨng dụng

    19/10/2019

    Thuật Toán PID trong Điều Khiển Tự Động

    Thuật Toán PID trong Điều Khiển Tự Động

    Chi tiết về thuật toán PID, các ví dụ thực tế và hướng đưa thuật toán ...

    Điện Tử Ứng DụngĐào tạo & nâng cao

    03/06/2016

    Thuật Toán Nén Dữ Liệu RLE

    Thuật Toán Nén Dữ Liệu RLE

    Trong quá trình lưu trữ cũng như truyền dữ liệu, việc nén dữ liệu là ...

    Giải Thuật Lập TrìnhKiến thức

    05/12/2016

    Giải Thuật Tìm Kiếm Minimax

    Giải Thuật Tìm Kiếm Minimax

    Giải thuật Minimax là một thuật toán đệ quy lựa chọn bước đi kế tiếp ...

    Giải Thuật Lập TrìnhGiải thuật tìm kiếm

    07/12/2015

    STDIO
    Trang chính
    Công ty TNHH STDIO

    30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
    +84 28.36205514 - +84 942.111912
    developer@stdio.vn

    383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
    Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012

    ©STDIO, 2013 - 2020