基本密码生成器 - 如何获得不同的随机(数字)所谓的

时间:2015-02-09 05:38:30

标签: c++ random std

现在的输出是HHHHHHHHHHHHHHHHHHHH。我希望程序要做的是randomNum每次循环时都有不同的值。所以它就像AacCEe ......继续。

#include <stdio.h>
#include <iostream>
#include <cstdlib>
#include <time.h>


using namespace std;

int main(){

    srand(time(0));

    cout << "You'r PW is: \t" << endl;
    char abc [] {'A', 'a', 'B' ,'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k'};
    int randomNum =  rand() % 22;

    for(int i = 0; i <20; i++){
        cout << abc[randomNum];
    }
}

2 个答案:

答案 0 :(得分:1)

在循环

之前已经初始化了randomNum
int randomNum =  rand() % 22;

您应该将代码更改为

    int randomNum;
    for(int i = 0; i <20; i++)
    {
        randomNum =  rand() % 22;
        cout << abc[randomNum];
    }

这应该有用。

目前,randomNum只获取一个值,您可以在整个循环中使用该值,而不会更改值。

答案 1 :(得分:0)

在循环中你有效地打印相同的角色20次,我想你想要的是随机选择20个不同的角色。查看我的内联评论。

#include <stdio.h>
#include <iostream>
#include <cstdlib>
#include <time.h>


using namespace std;

int main(){

    srand(time(0));

    cout << "You'r PW is: \t" << endl;
    char abc [] {'A', 'a', 'B' ,'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k'};    

    for(int i = 0; i <20; i++){
        cout << abc[rand() % 22]; // look here
    }
}