计算机模拟马氏链问题

人的健康状态分为健康和疾病两种状态,设对特定年龄段的人,今年健康、明年保持健康状态的概率为0.8,而今年患病、明年转为健康状态的概率为0.7,若某人投保时健康,问10年后他仍处于健康状态的概率

以下是使用C语言实现的代码:


#include <stdio.h>

int main() {
    double p[2][2] = {{0.8, 0.2}, {0.7, 0.3}};  // 状态转移概率矩阵
    double q[2] = {1.0, 0.0};  // 初始状态概率向量
    int years = 10;  // 模拟年数
    int i, j, k;

    // 模拟状态转移过程
    for (i = 0; i < years; i++) {
        double tmp[2];
        for (j = 0; j < 2; j++) {
            tmp[j] = 0;
            for (k = 0; k < 2; k++) {
                tmp[j] += p[k][j] * q[k];
            }
        }
        for (j = 0; j < 2; j++) {
            q[j] = tmp[j];
        }
    }

    // 输出结果
    printf("The probability of being healthy after %d years is: %.4lf\n", years, q[0]);

    return 0;
}

代码中定义了一个二维数组 p 作为状态转移概率矩阵,其中第一维表示当前状态(0 表示健康,1 表示疾病),第二维表示下一年的状态;定义了一个一维数组 q 作为初始状态概率向量,其中第一个元素表示初始健康概率,第二个元素表示初始疾病概率;然后通过循环模拟了状态转移过程,并输出了最终健康状态的概率。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7792504
  • 你也可以参考下这篇文章:写几个函数。 1. 输入10个职工的姓名和职工号 2. 按职工号由小到大排序,姓名也随之调整 3. 要求输入一个职工号,用折半查找法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名——C
  • 除此之外, 这篇博客: 豆瓣评分9.3:畅销38年,这部经典终于出配套习题解答了中的 中文版习题解答面世 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

     

    《C Primer Plus(第6版)》在之前版本的基础之上进行了全新升级,涵盖了C语言的新进展以及C11标准的详细内容。与之前的版本一样,其目标依然是为读者提供一本入门型、条理清晰、见解深刻的C语言教程。

     

    为了锻炼并提升读者的动手编程能力,《C Primer Plus(第6版)》除了在每章正文中包含了大量短小精悍的实例之外,还在每章末尾提供了颇有深度的综合性的复习题和编程练习题。

     

    《C Primer Plus(第6版)中文版习题解答》是经典畅销图书《C Primer Plus》的学习伴侣由北京师范大学名师详细剖析所有题目,全面提升C编程能力的优选编程练习册。

     

     

     

    先来看看这本习题解答有什么值得称赞的亮点呢?

     

    亮点一:完整代码示例,由浅入深

     

    对初学者来说,程序相关的图书略微枯燥了些,很多晦涩难懂的硬知识很容易让他们从入门到放弃。

     

    这本习题解答至始至终都有详尽完整的代码示例。读者只需按部就班,把代码输入编译器就能运行程序。就算一开始什么也不懂,但是只要程序能运行,初学者就会对学习抱有信心和兴趣。

     

    这本书给了初学者宝贵的信心和继续学下去的动力。一边看代码,一边阅读后面逐条代码的详细分析。随着学习的深入,反复敲打代码更有助于理解晦涩抽象的概念。慢慢地,自己也会用了。看到自己写的代码编译通过时,那种发自内心的愉悦是对学习最大的鼓励和肯定。

     

    亮点二:思维导图协助梳理知识结构

     

    在每章开篇,会有一个思维导图,帮助读者直观理解本章内容。当然,这种方式更妙之处在于可以帮助读者构建知识体系,所学的各种知识都可以在这种结构清晰的思维导图中展现。

     

     

    亮点三:海量实战案例

     

    既然是习题解答,那这本书就测重实战操作,通过海量的练习进而把知识点融会贯通。全书共17章节,每章除了有重点理论概念汇总,每章最后的习题都有详细的编码和解析。

     

    举个例子,怎么理解代码中的“语义错误”?

     

    语义错误也称为逻辑错误,主要是指程序设计中的语句在语法上正确,但是在功能和逻辑含义的表达上存在错误,从而引起程序的功能或者结果出现错误。

     

    C语言例子: "while(i = 1) {}" (正确的写法是"while(i ==1) {}")。这条语句的错误在于把赋值表达式当作循环的条件判断,这个表达式的值为1,因此,循环将不会停止。

     

    亮点四:丰富视频资源

     

    如果光看书还不够,本书配套丰富的视频资源,与教材内容相同步,更便于读者查漏补缺。文字讲解+思维导图+视频三管齐下,才能够为众多读者提供最全面的学习方式。

     

     

  • 您还可以看一下 徐朋老师的2021年软考系统集成项目管理工程师基础知识(下)软考视频教程课程中的 法和法律、诉讼时效、法律体系小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^