分布式作业 gossip模式
来源:互联网 发布:ubuntu开启samba服务 编辑:程序博客网 时间:2024/05/17 07:27
emm这是一个作业,作业大致要求是随机生成n个数,这n个数的平均数为sum/n
我们要做的是选定一个人作为母体(传染者)通过传染使得每个个体的值无限接近
于这个平均值,且有一个兴趣值和参数k,初始感染者兴趣值为1,每当传染一个人
且该个体和传染者值相同,则传染者兴趣值/k。当兴趣值低于一定值时,该传染者
失去传染性(此作业中我预设的这个限度值为0.0000001)
#include <iostream>#include <vector>#include <string>#include <stdlib.h> #include <time.h> using namespace std;struct node { double num; double interest; int flag;};int main() { srand((unsigned)time(NULL)); double k = 2; int cnt = 0; int n = 10 + rand() % 20; cout << "n=" << n << endl; vector<node> v(n); cout << "初始值:" << endl; double sum = 0; for (int i = 0; i < n; i++) { int temp = 1 + rand() % 99; v[i].num = temp; v[i].interest = 1; v[i].flag = -1; sum += temp; cout << temp << " "; } cout << endl; int t = 10 + rand() % 20; int inject = 1 + rand() % n-1; cout << "此时我们假定第"<<inject<<"个数为传播者,并传播" << t << "个循环" << endl; v[inject].flag = 0; for (int i = 0; i <t; i++) { for (int j = 0; j < n; j++) { if (v[j].flag ==i) { cout << "***************" << endl; cout << "找到母体" << j << endl; int tt; while (true) { tt= 1 + rand() %n-1; if (tt != j) break; } cout << "改变" << tt<<endl; if (v[tt].num != v[j].num) { v[tt].num = (v[j].num+v[tt].num)/2.0; v[j].num = v[tt].num; v[tt].flag = i+1; } else { cout << tt << "已被改变,"; v[j].interest = v[j].interest / k; cout << "兴趣为"; printf("%.5f\n", v[j].interest); if (v[j].interest <0.0000001) { v[j].flag =-999; cout << j << "号感染者失去感染性" << endl; cnt++; } } cout << "***************" << endl; v[j].flag++; } } cout << "第" << i + 1 << "次循环后:" << endl; for (int j = 0; j < n; j++) { cout << v[j].num << " "; } cout << endl; } cout << "预设平均值为" << sum / n<<endl; cout << "失去感染性的个数:" << cnt << endl; cout << "总个数:" << n << endl; system("pause"); return 0;}
阅读全文
0 0
- 分布式作业 gossip模式
- 分布式基础通信协议:paxos,totem和gossip
- 分布式基础通信协议:paxos,totem和gossip
- 分布式基础通信协议:paxos,totem和gossip
- 分布式基础通信协议:paxos,totem和gossip
- 分布式基础通信协议:paxos,totem和gossip
- 分布式基础通信协议:paxos,totem和gossip
- 分布式基础通信协议:paxos,totem和gossip
- Gossip
- Gossip
- 分布式大作业p2p聊天室
- Elastic-Job分布式作业框架
- 分布式作业框架elastic-job
- 设计模式作业代码
- 策略模式 作业
- 软件模式设计作业
- Gossip简介
- Gossip算法
- linux pinctrl驱动
- Authentication概述
- java高并发学习记录-死锁,活锁,饥饿
- AngularJS 学习
- 求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20)。
- 分布式作业 gossip模式
- 2018年 java面试跳槽必备
- cpp: ostream setf() 设置格式状态方法的初使用
- JVM —— Object Header(对象头)
- xgboost安装问题:动态库
- SpringMVC学习记录(四)--文件上传与下载
- Ubuntu 阿里源更新 && nvidia驱动安装 && cuda 安装
- 01-nodeJs下载及安装
- Java BAT大型公司面试专属必备技能视频教程