【发布时间】:2014-09-28 14:54:51
【问题描述】:
所以我用vector<string> 制作了这个“*”方块。现在我需要生成六个数字,代表从 1 到 N*N 的不同坐标(这是正方形的面积),以便我可以更改它们。我目前拥有的是这个
#include <cstdlib>
#include <iostream>
int main(){
int N = 4, x, y;
srand(time(NULL));
for(int i = 0; i < 6; i++){
//generate 6 random coordinates
int rnd = rand() % (N*N-1) + 2;
if(rnd <= N){
x = rnd;
y = 0;
}
else{
if((x = (rnd % N) - 1) < 0){
x = rnd / N - 1;
y = x;
}
else y = rnd / N;
}
std::cout << "rnd: " << rnd << " x:" << x << " y:" << y << "\n\n";
}
}
但我一直得到相同的坐标。我的代码有缺陷还是我需要添加一些东西?
【问题讨论】:
-
here 它可以工作(显然是伪随机的)...
-
srand每秒只会改变一点点值,所以如果你连续两次运行这段代码,我希望你确实得到相同/相似的结果。这与“随机种子”的工作方式有关 - 您的种子仅在下一秒从 111318789 变为 111318790,它并不像数字中的每一位都打乱。您可以尝试使用“get nano second time”,或者您可以在两次运行之间等待更长的时间...... -
@MatsPetersson 会试试的
-
@0d0a 生成 7 三次
-
@MatsPetersson 我怎样才能第二次获得纳米,在谷歌上没有找到任何东西
标签: c++ random coordinates