随机返回相同的循环值
Random returns same value in for loop
我将代码减少为最小,并且编译了相同的错误。我知道这会发出警告,您不需要提及它们。我是编码的新手,因此感谢您的帮助。 我遇到的问题是向量XPO和YPO在Main()中返回每个完成for循环的值相同的值。我将获得RNADOM输出,但是重复所有向量值。他们应该与众不同。你能帮我找到什么问题吗?太感谢了。代码:
#include "stdafx.h"
#include <ctime>
#include <cmath>
#include <random>
#include <iostream>
using namespace std;
//error is here?
int phaseTwoSimulate(double &Xpos, double &Ypos, int diameter, double stepSize) {
while (pow(Xpos - 201, 2) + pow(Ypos - 201, 2) < pow(diameter, 2)) {
// while inside cicle
int direction = rand() % 4;
switch (direction) {
case 0://north
Ypos = Ypos - stepSize;
break;
case 1://east
Xpos = Xpos + stepSize;
break;
case 2://south
Ypos = Ypos + stepSize;
break;
case 3://west
Xpos = Xpos - stepSize;
break;
}
}
return 0;
}
int main()
{
double Xpos = 201;
double Ypos = 201;
srand(time(NULL));
for (int x = 0; x < 50; x++) {
phaseTwoSimulate(Xpos,Ypos,50,1);
cout << Xpos << "," << Ypos << endl;
double Xpos = 201;
double Ypos = 201;
}
cin.ignore();
cin.get();
return 0;
}
您的问题与此代码中间的两行:
cout << Xpos << "," << Ypos << endl;
double Xpos = 201;
double Ypos = 201;
}
这样做的是声明两个新变量Xpos
和Ypos
并将它们设置为201。不使用这些变量。当您的循环再次绕开时,下一个呼叫phaseTwoSimulate
使用Xpos
和Ypos
的旧变量(和旧值),这意味着该点已经在您的圆圈之外,并且您的函数中的循环立即停止。
要解决此问题,请简单地将其更改为:
cout << Xpos << "," << Ypos << endl;
Xpos = 201;
Ypos = 201;
}
或更高
int main()
{
vector <int> vectorX;
vector <int> vectorY;
srand(time(NULL));
for (int x = 0; x < 50; x++) {
double Xpos = 201;
double Ypos = 201;
phaseTwoSimulate(Xpos, Ypos, 50, 1);
cout << Xpos << "," << Ypos << endl;
}
cin.ignore();
cin.get();
return 0;
}
相关文章:
- 为什么我的程序在for循环中k=0时返回垃圾值
- 我可以使用什么来停止循环而不是"返回 0"?
- 为什么在 while 循环中返回表达式不起作用
- 从嵌套循环中的 std::list 中删除将返回访问冲突
- 这个返回元素位置的基于循环的函数有什么问题?
- EnQueue 方法在循环队列中未正确返回C++?
- C++初学者:为什么我的编译器根据我的循环返回"name not found"?
- 如何循环访问 cpp 中的函数返回的字符指针数组
- C++:返回一个基于范围 for 循环迭代器,其中包含继承对象
- 从子菜单返回后,正确的输入至少进入验证循环一次
- 对于等待以 std::future wait() 返回的函数的 CPU 使用率或检查标志在循环中休眠一段时间哪个更好?
- 有没有办法将 for 循环结果返回到像三元运算符这样的函数中?
- 返回值 mxGetPr() -- 等效循环
- 返回到循环 c++
- 从 for 循环返回每个值 in C++
- 从循环返回char函数数据
- 在返回值的函数中使用内部循环返回
- 当循环返回"for each"项的 nullptr 时?
- 如何在用户输入字母而不是数字时循环返回
- 在c++中,从for循环返回一个函数的值是不好的做法