我想将随机数与一些字母数字字符交错,例如:HELLO与随机数25635→H2E5L6L3O5
混合。我知道%1d
控制间距,虽然我不确定如何在随机数之间交错文本或如何实现这一点。
代码:
int main(void) {
int i;
srand(time(NULL));
for (i = 1; i <= 10; i++) {
printf("%1d", 0 + (rand() % 10));
if (i % 5 == 0) {
printf("\n");
}
}
return 0;
}
顺便说一下 - 如果我的随机数生成器不是很好,我可以接受建议 - 谢谢
答案 0 :(得分:5)
如果您对使用C ++ 11感到满意,可以使用以下内容:
#include <iostream>
#include <random>
#include <string>
int main() {
std::random_device rd;
std::default_random_engine e1(rd());
std::uniform_int_distribution<int> uniform_dist(0, 9);
std::string word = "HELLO";
for (auto ch : word) {
std::cout << ch << uniform_dist(e1);
}
std::cout << '\n';
}
......产生例如:
H3E6L6L1O5
如果您使用较旧的编译器,可以使用标准C库中的rand
和srand
作为随机数:
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
int main() {
std::srand(std::time(NULL));
std::string word = "HELLO";
for (int i = 0; i < word.size(); ++i) {
std::cout << word[i] << (rand() % 10);
}
std::cout << '\n';
}