【发布时间】:2016-11-07 16:37:31
【问题描述】:
我正在尝试使用 rand() 创建一个随机数字/字母,但是每次调用它时它只会返回相同的数字/字母。
void Location::pick() {
srand(time(NULL));
x = rand() % fieldSize + 1;
int locy = rand() % fieldSize + 1; // rand y
switch (locy) {
case 1: y = 'a'; break;
case 2: y = 'b'; break;
case 3: y = 'c'; break;
case 4: y = 'd'; break;
case 5: y = 'e'; break;
}
}
fieldSize 设置为 5。我在顶部使用 srand()。下面是我调用函数的地方。
void Fleet::deployFleet() {
bool newLoc = true;
Location tmp;
for (int i = 0; i < fleetSize; i++) {
tmp.pick();
ships[i].setLocation(tmp);
}
}
fleetSize 设置为 5。ships[] 是 5 艘船的数组。 setLocation() 只是将船的位置设置为给定的参数。
【问题讨论】:
-
不要使用
rand(),尤其不要使用rand() % n。阅读更多here。请改用srand和时间作为参数。 -
重新打开,因为代码有点不同。高度相关:stackoverflow.com/questions/37701567/…
-
这段代码的一切都被破坏了。多次播种,使用
time(NULL)作为种子,使用rand(),使用%限制数字的范围……我什至不知道从哪里开始。
标签: c++ visual-studio