使用C randint生成四个数字

generating four digits by using the C++ randint

本文关键字:四个 数字 randint 使用      更新时间:2023-10-16

我在研究Stroustrup的书籍"编程:使用C 的原理和练习"时使用标头文件std_lib_facilities.h。我在早期的章节中。在第5章的练习13中,我熟悉了randint()功能,以制作"我的牛和公牛"。游戏(上一个练习)更有趣,但是当我使用此功能时,它有时会产生更多的数字,而不是我迭代循环的次数。

来自std_lib_facilities.h

inline int randint(int max) { return rand()%max; }

这是我的代码:

vector<int> answer;
for (int i = 0; i<4; ++i) { 
    int answer_digit=randint(10);
    answer.push_back(answer_digit); 
}
for (int i = 0; i < 4; ++i) std::cout << answer[i];
_getch();
std::cout << std::endl;

例如,在我的情况下,它给出了第一个数字的63109,然后给出4706,然后是5423,然后再提供7个四位数的数字,然后又是一个五位数的,即94410。为什么会发生这种情况?这是库中函数的错误,还是我自己代码中的一个愚蠢的错误?谢谢。

(我知道我可以使用种子得到更现实的随机,但这与我的问题无关(至少,我的猜测!)。

要生成4位而无需重复的数字,随机洗牌10 0 -9并取下前四个。

要随机洗牌,将第一个与0到N-1上的随机索引交换(可能与自身交换)在1上交换第二个,将第二个交换为N-1,第2至N-1中的第三个,2至N-1中的第三个和很快。如果领导0不允许,特殊情况是第一个数字。