模拟幂律分布,每个时间步长增加一个点,从两个点开始,度高(即k大)的点优先获得新连接,即一个度为的节点,获得连接的概率为

这样模拟下去,度分布满足

时,有

实际模拟时,当时,有

编程的一些思路

1、int sites[N]

sites[ii]=0表示该点还未产生,sites[ii]=1表示该点已产生

2、link[N][N]

记录两节点之间的连接

link[ii][jj]=0

ii、jj这两个节点之间不能连接(一般指自己和自己不能连接)

link[ii][jj]=1

ii、jj这两个节点之间已有连接

link[ii][jj]=N

ii、jj这两个节点之间还未连接,可以连接

3、利用随机投点法选择和谁连接

如图所示,sumkk[ii]表示前ii个节点的度的总和,在0-sumkk[N]之间投点,落到哪个区间,就与该区间右端点代表的节点连接,这样可以保证一个节点获得连接的概率与它的度成正比。

模拟结果

源代码(C语言)

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>#define N 10000//节点数目int main(){static int sites[N];//记录节点是否已经产生static int kk[N];//记录节点的度static int link[N][N];//记录两节点之间的连接static int sumkk[N];//记录前ii个节点的度的总和,方便进行随机投点决定新加入的点与哪个点连接static int countnum[N];//计数:记录连接度为ii的节点个数int temp_mm=0;for (int ii=0;ii<N;ii++){sites[ii]=0;kk[ii]=0;sumkk[ii]=0;}//sites[ii]=0表示该点不存在,sites[ii]=1表示该点存在for(int ii=0;ii<N;ii++){for(int jj=0;jj<N;jj++){link[ii][jj]=N;//初始化为N,表示未连接}link[ii][ii]=0;//初始化为0,表示自己与自己不可以连接}sites[0]=1;kk[0]=1;srand((unsigned)time(NULL));for(int jj=1;jj<N;jj++){sites[jj]=1;sumkk[0]=kk[0];for(int ii=1;ii<N;ii++){sumkk[ii]=sumkk[ii-1]+kk[ii];}int true=1;while(true){double temp=sumkk[N-1]*rand()/(RAND_MAX*1.0);if(temp<=sumkk[0]) {temp_mm=0;}else{for(int mm=1;mm<N;mm++){if((temp>sumkk[mm-1])&&(temp<=sumkk[mm])){temp_mm=mm;break;}}}if(link[temp_mm][jj]==N){//两点可以连接的前提是它们未连接,即link不为1;且它们可以连接,link不为0link[temp_mm][jj]=1;link[jj][temp_mm]=1;kk[jj]=kk[jj]+1;kk[temp_mm]=kk[temp_mm]+1;true=0;//成功找到连接,可以退出while循环,否则将继续循环找连接}}}FILE* fp = fopen("kk.csv", "w");for(int ii=0;ii<N;ii++){fprintf(fp,"%d  %d\n",ii,kk[ii]);}for(int ii=0;ii<N;ii++){countnum[kk[ii]]++;}FILE* fp2 = fopen("countnum.csv", "w");for(int ii=0;ii<N;ii++){fprintf(fp2,"%d  %d\n",ii,countnum[ii]);}fclose(fp);fclose(fp2);return 0;
}

模拟幂律分布(附C语言代码)相关推荐

  1. 幂律分布的参数估计方法及R实现

    幂律分布 幂律分布出现在许多自然以及人为的现象中,如城市的人口.地震的强度以及停电的影响范围等.但其检验及特征描述可能由于长尾部分的波动以及幂律分布适用的范围而变得复杂,常用的方法,如最小二乘拟合,在 ...

  2. 幂律分布图matlab代码,关于幂律分布,你还应该知道如何用代码实现!| 集智百科...

    今天我们继续学习幂律分布的基本概念--幂律概率分布,以及如何用代码实现幂律分布.内容来自集智百科,集智百科是复杂系统领域的百科全书,涵盖复杂系统领域的基本概念(持续完善中). 我们正在组织撰写翻译相应 ...

  3. 从幂律分布到特征数据概率分布——12个常用概率分布

    在机器学习领域,概率分布对于数据的认识有着非常重要的作用.不管是有效数据还是噪声数据,如果知道了数据的分布,那么在数据建模过程中会得到很大的启示. 首先,如下图所示8个特征数据概率分布情况(已经做归一 ...

  4. 数理统计10.15 | 幂律分布

    数理统计10.15 | 幂律分布 定义 示例 幂律与"长尾" 克莱伯定律(Kleiber's Law) Zipf定律:书籍中单词频率的分布 Pareto定律(帕累托定律) 性质 标 ...

  5. Python数据可视化:幂律分布

    1.公式推导  对幂律分布公式:    对公式两边同时取以10为底的对数:    令,且为常数,所以公式变为:  所以对于幂律公式,对X,Y取对数后,在坐标轴上为线性方程. 2.可视化  从图形上来说 ...

  6. 【转载】关于幂律分布的一个笔记

    关于幂律分布的一个笔记 原文转自:http://blog.sina.com.cn/s/blog_55954cfb0100ps89.html 0:题外话或补记 最早知道二八法则,还是一本介绍犹太民族杰出 ...

  7. 关于幂律分布的一个笔记_哈克_新浪博客

    关于幂律分布的一个笔记_哈克_新浪博客 关于幂律分布的一个笔记     (2011-03-02 18:12:27)     转载▼     标签:     幂律     二八法则     杂谈     ...

  8. 第10章* 网络 幂律分布

    幂律是说节点具有的连线数和这样的节点数目乘积是一个定值,也就是几何平均(对各变量值的连乘积开项数次方根)是定值. 例:有10000个连线的大节点有10个,有1000个连线的中节点有100个,100个连 ...

  9. 幂律分布 计算机科学,Numpy 发现幂律分布

    我们现在要假设自己在运作一只对冲基金.让我们沉浸到这个假设场景中,你现在是资本市场中的一名精英了. 幂律分布存在于众多领域之中,更多相关信息参见http://en.wikipedia.org/wiki ...

最新文章

  1. 美团高级技术专家:DDD 在旅游电商架构演进中的实践
  2. Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析
  3. 汇编: dup伪指令
  4. #软件配置管理#之坏味道搜集
  5. 小分子蛋白Western blot 检测
  6. Oracle Minus关键字
  7. 能搜python题的软件_中国大学MOOC的APP用Python玩转数据期末考试搜题公众号答案...
  8. android 手机工具箱,Android超级工具箱,你的手机可能缺一个!
  9. MySql的架构和历史
  10. 自定义View合辑(2)-饼状图
  11. 小米多主题思路分析-重定向资源篇
  12. 软件工程—团队作业1(三人行)
  13. unity shader中关于Tags的整理
  14. MATLAB之绘图基础
  15. 2021第三届长安杯检材三复盘
  16. Chapter2 ROS通信机制----基础篇(Ⅰ)vs配置及通信基础
  17. Android View 生成唯一 Id
  18. 服务器 为什么linux,为什么服务器要用linux系统?
  19. 第32届IEEE机器人与人类交互通信国际会议ROMAN 2023
  20. Kaggle注册方法

热门文章

  1. 网页搜索指定网站内容site
  2. 编译原理知识点总结——从NFA到DFA的转化
  3. oracle8数据库help文件增长,Oracle 10g 读书笔记
  4. 学生成绩管理系统-C语言(附源码)
  5. mysql-8.0.31-winx64详细安装教程
  6. oh my zsh详细安装教程
  7. 使用Webpack构建SPA模式的多页面应用(基于Vue 2)
  8. 使用screen保持程序在背景继续运行
  9. 有哪些既实用又好看的蓝牙耳机?高颜值实用蓝牙耳机排行
  10. 姗姗来迟的苹果AR设备将要落地,但颠覆iPhone销量仍是空谈