gpt4 book ai didi

c - 如何给结构对象随机不匹配 C 中的 x 和 y 坐标?

转载 作者:太空宇宙 更新时间:2023-11-04 08:46:26 24 4
gpt4 key购买 nike

我正在尝试做作业,这是一种游戏。这是它的一部分,我正在尝试创建一个函数,将 18 个(一个团队中有 9 个,另一个团队中有 9 个)不同的球员放在场上。 player 是一个具有名称和坐标的结构。所以我试着写这个函数,但遇到了几个问题。我想我已经基本修复了它们,但我现在不明白它出了什么问题。基本上这个函数给所有玩家随机的 x 和 y 坐标,但因为我必须确保它们不匹配,所以我创建了 2 个列表 x 和 y。如果当前玩家 x 坐标与 x 列表中的任何 x 坐标匹配,则该程序获取所有玩家并将他们的 x 坐标添加到 x 列表中,然后程序检查同一玩家的 y 坐标并检查它是否与同一对象的 y 坐标匹配在你的列表中。所以如果 x 和 y 都数学,那么程序通过递归再次运行。我遇到的问题是每次运行程序时得到的坐标都是相同的。它们不匹配,但它们并不是真正随机的,因为当我再次运行它们时它们不会改变。

我想我已经尝试了所有的知识和技能,但仍然无法理解我的代码的问题。你能告诉我这段代码有什么问题吗?

void random_positions()
{
int i,j;
int xs[17],ys[17];
for(i= 0; i<9 ; i++)
{
players[i][0].x = rand() % 25;
players[i][0].y = rand() % 25;
players[i][1].x = rand() % 25;
players[i][1].y = rand() % 25;
printf("A%d x = %d y = %d \n",i+1,players[i][0].x,players[i][0].y);
printf("B%d x = %d y = %d \n",i+1,players[i][1].x,players[i][1].y);
}
for(i = 0; i < 9 ; i++)
{
xs[i] = players[i][0].x;
xs[i+8] = players[i][1].x;
ys[i] = players[i][0].y;
ys[i+8] = players[i][1].y;
for(j = 0; j <= i ; j++)
{
//printf("j%d start\n",j);
if(i != j && xs[i] == xs[j])
{
//printf("i%d start\n",j);
if(ys[i] == ys[j])
{
return random_positions();
}
//("j%d done\n",j);
}
//printf("j%d done\n",j);
}
}
}

最佳答案

计算机(通常)是确定性机器;如果你运行同一个程序两次,你会得到相同的答案。

随机数生成器通常采用种子,这是它在开始生成随机数之前用于初始化自身的初始值;给它一个不同的种子,你会得到一个不同的序列。一种方法是将当前时间作为种子提供给它:

#include <stdio.h>
#include <stdlib.h> /* srand, rand */
#include <time.h> /* time */

int main ()
{
/* initialize random seed: */
srand (time(NULL));

/* generate random number between 1 and 10: */
int num = rand() % 10 + 1;

printf("%d\n", num);

return 0;
}

关于c - 如何给结构对象随机不匹配 C 中的 x 和 y 坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21517180/

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