或者你不能真正传递这样的数组的一部分..或者某些东西是非常奇怪的

 披着狼皮的卷毛羊万_784 发布于 2023-02-09 13:38

我正在编写的程序的目的是实现一个遗传算法来开发随机游戏Piglet的游戏策略.首先,我有一个包含所有策略的数组,并且我将一个索引传递给'fitness'函数.只是为了检查一切工作正常,我打印了策略(此时为了简化这些测试,在此时只有1个人口).好吧..它有点工作; 我有一个10x10x10的零和一些它应该做的数组,但程序进行打印数字; 有时是零块,有时是大块的可笑块.我认为我对健身的呼吁可能是问题..我从未见过/被告知这是可能的,但我不明白为什么它不会,所以试一试.

这是代码:

#include 
#include 
#include 

#define STRATS 1

double fitness(int strategy[10][10][10]){

    for (int i=0; i<10; ++i) {
        printf("\n\n");
        for (int j=0; j<10; ++j) {
            printf("\n");
            for (int k=0; k<10; ++k) {
                printf("%d ", strategy[i][j][k]);
            }
        }
    }

    return 0;
}

int main () {

    int strategies[STRATS][10][10][10]; /*[strategy reference][i][j][k]*/
    int fitnesses[STRATS];

    /*Generate initial strategies*/

    for (int s=0; s

这是我完成实际需要后得到的一些随机输出的片段:

0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 
0 0 -17958193 16777223 3 7 9 1856 133 0 
25 792 1163157343 21592 0 0 1606418432 32767 245760 0 
0 0 245760 0 7 5 9 0 1702125407 29816 
0 0 1163157343 21592 0 0 1606422528 32767 146750 0 
4096 4 0 0 -2147482624 0 0 0 1951620959 1667855457 


1953066569 0 1163157343 21592 0 0 1606569278 32767 1025 0 
150846 0 0 0 0 0 0 0 1935892319 1852404340 
103 0 1163157343 21592 0 0 1606570304 32767 35849 0 
151872 3 0 0 2 0 0 0 1868783455 7631726 
0 0 1163157343 21592 0 0 1606606176 32767 192 0 
187744 5 0 0 0 0 0 0 1868848991 1819303782 
1936417647 7627124 1163157343 21592 0 0 1606606368 32767 2988 0 
187936 4 0 0 15 0 0 0 1868848991 2019778406 
1970429793 6911086 1163157343 21592 0 0 1606609360 32767 1956 0 
190928 4 0 0 15 0 0 0 1667719007 2019909475 

chux - Reins.. 5

失败,因为代码访问其内存之外.

#define STRATS 1
...
int strategies[STRATS][10][10][10];
...
// for (int s=0; s<20; ++s) {
for (int s=0; s

也许改成 #define STRATS (20)

1 个回答
  • 失败,因为代码访问其内存之外.

    #define STRATS 1
    ...
    int strategies[STRATS][10][10][10];
    ...
    // for (int s=0; s<20; ++s) {
    for (int s=0; s<STRATS; ++s) {
    

    也许改成 #define STRATS (20)

    2023-02-09 13:41 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有