如何防止在c中cin之后生成新的rand()
How to prevent a new rand() being generated after cin in c?
如何防止从cin
生成新的rand()
值?我正在构建一个程序,如果用户没有输入正确的输入,srand()
仍然保留其值,直到用户输入正确的值。
我该如何设置循环来执行此操作?
例如,如果我只查找1-6之间的数字。例如,如果rand()
的值是994,如果用户输入字母A,那么在输入数字之前,rand()的值仍然是994。
while(user input is a number){
if(rand()%6 == 1){
if(userNumber == 1){
cout << "Your roll is 1. Please roll again: "
cin >> userRoll;
else{
cout << "Invalid roll. Please roll again: "
cin >> userRoll;
}
}
else if(rand()%6 == 0){
if(userNumber == 1){
cout << "Your roll is Blue. Please roll again: "
cin >> userRoll;
}
else{
cout << "Invalid roll. Please roll again: "
cin >> userRoll;
}
}
}
所以srand有两个不同的路径,但如果roll无效,我希望rand的值保持不变,这样它仍然在userNumber==1或userNumber===0路径中。
保存rand()
的返回并只使用rand()
一次:
int some_random_number = rand();
while(user input is a number){
if(some_random_number % 6 == 1){
// ... snip ...
}
else if(some_random_number % 6 == 0){
// ... snip ...
}
}
在修复代码时,请查看被认为有害的rand()
。
相关文章:
- 为什么我不能将 rand() 与数组的大小一起使用?
- 为什么新的随机库比std::rand()更好
- 为什么rand()的使用被认为是不好的
- C++使用 rand 定义函数语法
- 为什么 rand 不在我的代码中生成随机数?
- 为什么 CWE 认为 rand() 具有潜在危险
- 在 c++ 中,rand() 在执行有调试和不带调试的程序时生成不同的结果
- Rand() 没有显示随机数,请帮助我了解出了什么问题:)
- Rand()大小写开关在多次迭代后运行到无穷大
- rand()函数在特定问题中的工作
- 为什么 someNumber = rand() & 100 + 1;不产生错误?
- 除了 rand() 之外,是否有任何随机生成器库,开发人员可以手动设置种子?
- 如何生成比用户使用 rand() 函数输入的数字大 5-10% 的数字?
- rand()/RAND_MAX 函数每次打印 1
- 使用 rand() 和 srand() 有问题
- " rand()%3-1 " 在 C++ 中是什么意思?
- 如何使 rand() 更加随机?
- C++ 更深入地了解 rand() 和 srand() 内部
- 在 C++ 中向 rand() 添加模数会影响 for 循环之外的执行,为什么以及如何补救?
- cpp中rand()方法的bankend程序是什么?