gpt4 book ai didi

c - 如何用已有的数字随机补全 Matrix[4][4]?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:03:04 26 4
gpt4 key购买 nike

我对我需要创建的内存游戏有疑问。我制作了一个大小为 [4][4] 的固定矩阵。卡的数量必须根据用户选择的难度来增加。所以这是一个逻辑示例:

在难度 1 -> 矩阵中只有 3 个相等的对,例如:{1,1}{4,4}{5,5},这些数字必须成对随机化,所以在那之后我可以完成矩阵。

难度 2 -> 矩阵中只有 3 个相等的对 - {1,1}{4,4}{5,5}{3,3} - 再次需要成对的随机数,这样我就可以完成矩阵了。

难度 3 -> 用随机数对完成大小为 [4][4] 的矩阵。

也许你应该看看

for(i=0;i<lim_linha;i++)

我的代码:

void preencher_mesa(int matriz[4][4], int dificuldade)

{

int i,j;
int cartas[7][1]; //cards
int cont =1; //count
int lim_col, lim_linha; //limit_colunm //limit_line

for(i=0; i<4; i++)
for(j=0;j<4;j++)
matriz[i][j] = 0;

if(dificuldade == 1) //difficulty == 1
{
lim_col = 3; //estabelecendo limites para que não ultrapaasse o valor da mesa
lim_linha = 2;
}
else if(dificuldade == 2)
{
lim_col = 4;
lim_linha = 2;
}
else if(dificuldade == 3)
{
lim_col = 4;
lim_linha = 4;
}

for(i=0;i<lim_linha;i++) //setando os numeros aleatórios para dentro das
{ // matrizes de acordo com o nivel de dificuldade
for(j=0; j<lim_col;j++)
{
if(dificuldade == 1)
{

int aux=0;
while(cont>=1 && cont <=8)
{
cartas[i][0] = cont;
cartas[i][1] = cartas[i][0];
cont++;
printf("[%d]\n",(rand()%1 +(cartas[i][0])));
printf("[%d]\n",(rand()%1 +(cartas[i][1])));
}
}
}
}

//Gerando numeros aleatórios em pares por isso [0] e [1]
//sorting numbers in pairs to stabilish the numbers of cards
//{1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8}

PS:随机数的范围应该是1-8,我不能有两个或更多相同的数字对。

最佳答案

考虑难度级别 1:您首先希望从集合 {1,2,3,4,5,6,7,8} 中随机选择三个数字,然后给这三个数字中的每一个一对希望将它们随机放置在 4x4 矩阵中。

从 8 个中选出 3 个数的方法数称为 从 8 个中选出 3 个,计算为

8! / (3! * (8-3)!)

减少到

8 * 7 * 6 / (3 * 2 * 1) = 56

因此,可以通过枚举这 56 种可能性并从 1 到 56 的整数中随机选择来确定 DIFFICULTY LEVEL 1 的数字对。

现在给定 3 对数字,希望将它们随机放置在一个 4x4 矩阵中。有:

  • 16 * 15/2 = 120 种放置第一对的方法;
  • 14 * 13/2 = 91 种放置第二对的方法;
  • 12 * 11/2 = 66 种放置第三对的方法;和
  • 3 * 2 * 1 = 6种方法选择三对的顺序

所以这意味着有 120 * 91 * 66/6 = 120,120 种方法可以将三对放在一个空的 4x4 矩阵中。同样,通过确定这120,120种可能性的枚举,并从1到120,120的整数中随机选择,即可完成矩阵确定。

其他难度级别也是如此。

关于c - 如何用已有的数字随机补全 Matrix[4][4]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31062767/

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