C++ - 随机数

#include <iostream>
#include <string>
#include <ctime>
#include <Windows.h>

using namespace std;

//////////////////////////////////////////////////////////
// 全局静态随机数种子
static int g_nSeed = time(NULL);

//
// 函数                --            int GetRandNum(int , int)
//
// 功能                --            获取随机数
//
// @param1         --            随机范围 : 起始
// @param2         --            随机范围 : 终止
//
// 返回值             --            随机数
//
int GetRandNum(int nMin, int nMax)
{
    srand(g_nSeed);
    g_nSeed = rand();
    return (nMin + (rand()) % (nMax - nMin));
}

//
//    函数                --            char GetChar(BOOL)
//
//   功能                --            获取字符
//
//    @param           --            默认为:TRUE;        TRUE:账号字符;   FALSE:密码字符;
//
//    返回值             --            1.@param == TRUE,    返回账号字符
//                                     2.@param == FALSE,    返回密码字符
//
char GetChar(BOOL bIsAccount = TRUE)
{
    string strLib("\0");
    if ( bIsAccount )
    {
        strLib.append(
            "abcdefghijklmnopqrstuvwxyz"
            "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
            "123456789");
    }
    else
    {
        strLib.append(
            "abcdefghijklmnopqrstuvwxyz"
            "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
            "123456789"
            "!@#$%^&*()"
            "`~-=+[]{}\\|;:'\",<.>/?");
    }

    char chRet = strLib[GetRandNum(0, strLib.size())];
    return chRet;
}

//
//    函数                --            string GetAccountNumOrPassWord(BOOL)
//
//    功能                --            获取字符
//
//    @param           --            默认为:TRUE;        TRUE:生成账号字符串;   FALSE:生成密码字符串;
//
//    返回值              --            1.@param == TRUE,    返回账号字符串;
//                                     2.@param == FALSE,    返回密码字符串;
//
string GetAccountNumOrPassWord(int nMIn, int nMax, BOOL bIsAccount = TRUE)
{
    int nLen = GetRandNum(nMIn, nMax);
    string strChars(nLen, '0');
    for (int i = 0; i < nLen; ++i)
    {
        strChars[i] = GetChar(bIsAccount);
    }

    return strChars;
}


int main()
{
    // 生成20个账号&&密码
    for (int i = 0; i < 20; ++i)
    {
        cout << "账号: " << i << GetAccountNumOrPassWord(7,10, TRUE) << "  \t密码: " << GetAccountNumOrPassWord(20, 25, FALSE) << endl;
    }

    getchar();
    return 0;
}

posted @ 2016-05-06 12:01  C/C++/Python/Java  阅读(331)  评论(0编辑  收藏  举报