c_cpp 电影“社交网络”中的算法。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 电影“社交网络”中的算法。相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
#include <math.h>

typedef struct {
    const char *name;
    int rank;
    double expect_rate;
} girl;

const int K = 10;

void read_girl(girl g) {
    printf("Girl name: %s, rank: %d, expect_rate: %.5f\n",g.name,g.rank,g.expect_rate);
}

void compute_expect_rate(girl *a,girl *b) {
    int a_rank = a->rank;
    int b_rank = b->rank;
    // expect rate formula
    // Ea = 1 / (1 + 10 ^ ((Rb-Ra) / 400))
    double a_rank_differ = (double) (b_rank - a_rank) / 400;
    double a_rank_rate = pow(10,a_rank_differ);
    a->expect_rate = 1 / (1 + a_rank_rate);
    // Eb = 1 / (1 + 10 ^ ((Ra-Rb) / 400))
    double b_rank_differ = (double) (a_rank - b_rank) / 400;
    double b_rank_rate = pow(10,b_rank_differ);
    b->expect_rate = 1 / (1 + b_rank_rate);
}

// new rank formula: Na = Oa + K(W - Ea)
void compute_rank(girl *a,girl *b,int a_win_rate,int b_win_rate) {
    a->rank = a->rank + K * (a_win_rate - a->expect_rate);
    b->rank = b->rank + K * (b_win_rate - b->expect_rate);
}

int main(int argc,char *argv[]) {
    char a_girl_name[20];
    char b_girl_name[20];

    girl a = {.name = "A Gril",.rank = 1400};
    girl b = {.name = "B Gril",.rank = 1400};

    compute_expect_rate(&a,&b);

    read_girl(a);
    read_girl(b);

    while (1) {
        char choice[2];
        printf("Choice A or B?\n");
        scanf("%s",choice);
        if (choice[0] == 'A') {
            compute_rank(&a,&b,1,0);
            compute_expect_rate(&a,&b);
        } else if (choice[0] == 'B') {
            compute_rank(&a,&b,0,1);
            compute_expect_rate(&a,&b);
        } else {
            printf("Invalid choice!\n");
            break;
        }
        read_girl(a);
        read_girl(b);
    }
}

以上是关于c_cpp 电影“社交网络”中的算法。的主要内容,如果未能解决你的问题,请参考以下文章

好莱坞用PreAct追踪观众行为大数据 为电影上映宣传做决策依据

您如何对社交网络节点进行分组?

SNA社交网络算法

为社交网络模拟一个名为 slope-one 的推荐系统算法

计算社交网络的用户交互 - 算法

10X单细胞(10X空间转录组)聚类算法之Louvain