gpt4 book ai didi

c++ - 如何防止在 c 中的 cin 之后生成新的 rand()?

转载 作者:行者123 更新时间:2023-11-28 07:16:28 25 4
gpt4 key购买 nike

如何防止 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() considered harmful .

关于c++ - 如何防止在 c 中的 cin 之后生成新的 rand()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20160400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com