使用c++随机生成100个坐标,x坐标和Y坐标放在不同数组中
时间: 2023-09-15 17:15:24 浏览: 75
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int x[100], y[100];
srand(time(NULL)); // 设置随机种子
// 随机生成100个坐标
for (int i = 0; i < 100; i++) {
x[i] = rand() % 100; // x坐标范围为0~99
y[i] = rand() % 100; // y坐标范围为0~99
}
// 输出坐标
for (int i = 0; i < 100; i++) {
printf("(%d, %d)\n", x[i], y[i]);
}
return 0;
}
```
相关问题
使用c++随机生成100个坐标,x坐标和Y坐标放在不同数组中,然后用分治法求出最近的两个坐标
以下是使用C语言实现的代码。我们首先用rand()函数生成100个随机数作为x坐标和y坐标,然后使用分治法找到最近的两个点。
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 100
// 定义一个点结构体,包含x坐标和y坐标
struct point {
int x;
int y;
};
// 计算两个点之间的距离
double distance(struct point a, struct point b) {
return sqrt(pow(a.x - b.x, 2) + pow(a.y - b.y, 2));
}
// 按x坐标排序
int cmpx(const void *a, const void *b) {
struct point *p1 = (struct point *)a;
struct point *p2 = (struct point *)b;
return (p1->x - p2->x);
}
// 按y坐标排序
int cmpy(const void *a, const void *b) {
struct point *p1 = (struct point *)a;
struct point *p2 = (struct point *)b;
return (p1->y - p2->y);
}
// 分治法找到最近的两个点
double closest_pair(struct point p[], int n) {
double dmin, dleft, dright;
int i, j, k, m;
struct point pleft[N], pright[N], pmid[N];
if (n == 2) {
return distance(p[0], p[1]);
}
if (n == 3) {
double d1 = distance(p[0], p[1]);
double d2 = distance(p[1], p[2]);
double d3 = distance(p[2], p[0]);
return fmin(fmin(d1, d2), d3);
}
// 按x坐标排序,分成左右两组
qsort(p, n, sizeof(struct point), cmpx);
m = n / 2;
for (i = 0; i < m; i++) {
pleft[i] = p[i];
}
for (i = m; i < n; i++) {
pright[i - m] = p[i];
}
// 分别在左右两组中递归查找最近的两个点
dleft = closest_pair(pleft, m);
dright = closest_pair(pright, n - m);
// 找到中间的点
k = 0;
for (i = 0; i < n; i++) {
if (abs(p[i].x - p[m].x) < dleft) {
pmid[k] = p[i];
k++;
}
}
// 按y坐标排序,查找中间区域内最近的两个点
qsort(pmid, k, sizeof(struct point), cmpy);
dmin = dleft;
for (i = 0; i < k; i++) {
for (j = i + 1; j < k && pmid[j].y - pmid[i].y < dmin; j++) {
double d = distance(pmid[i], pmid[j]);
if (d < dmin) {
dmin = d;
}
}
}
return dmin;
}
int main() {
struct point p[N];
double d;
int i;
// 生成100个随机点
srand(1234);
for (i = 0; i < N; i++) {
p[i].x = rand() % 1000;
p[i].y = rand() % 1000;
}
// 查找最近的两个点
d = closest_pair(p, N);
printf("最近的两个点的距离为%.2f\n", d);
return 0;
}
```
c++随机x,y轴坐标代码
生成在 [0, n) 范围内的随机整数可以使用 rand() % n,因此生成在 [0, m) × [0, n) 范围内的随机坐标可以使用以下代码:
```cpp
#include <cstdlib>
#include <ctime>
int main()
{
srand(time(nullptr)); // 初始化随机数种子
int m = 10; // x轴最大值
int n = 5; // y轴最大值
int x = rand() % m;
int y = rand() % n;
return 0;
}
```
其中 srand(time(nullptr)) 用于初始化随机数生成器,time(nullptr) 返回当前时间的秒数,这样可以保证每次运行程序生成的随机数序列都不同。