//GetPercentWithPrecision eleme 最大饥饿算法
/*** @param {Array.<number>} valueList a list of all data 一列数据* @param {number} idx index of the data to be processed in valueList 索引值(数组下标)* @param {number} precision integer number showing digits of precision 精度值* @return {number} percent ranging from 0 to 100 返回百分比从0到100* eg. GetPercentWithPrecision([]int{3, 3, 3}, 0, 2)   // 33.34*/
func GetPercentWithPrecision(valueList []int, idx int, precision int) (res float64) {if idx >= len(valueList) {res = 0return}var digits = math.Pow10(precision)var total = 0for _, value := range valueList {total += value}if total == 0 {return}var votesPerQuota = make([]float64, len(valueList))for i, value := range valueList {votesPerQuota[i] = float64(value) / float64(total) * digits * 100}var targetSeats = digits * 100var currentSeatsSum intvar seats = make([]int, len(valueList))var remainder = make([]float64, len(valueList))for i, votes := range votesPerQuota {seats[i] = int(votes)currentSeatsSum += int(votes)remainder[i] = votes - float64(seats[i])}for currentSeatsSum < int(targetSeats) {var max = float64(0)var maxID = 0for i, remainVal := range remainder {if remainVal > max {max = remainValmaxID = i}}seats[maxID]++remainder[maxID] = 0currentSeatsSum++}res = float64(seats[idx]) / digitsreturn
}

计算百分比---饥饿算法(golang)相关推荐

  1. 获取用户列表为空_数据结构和算法(Golang实现)(15)常见数据结构-列表

    列表 一.列表 List 我们又经常听到 列表 List 数据结构,其实这只是更宏观的统称,表示存放数据的队列. 列表 List:存放数据,数据按顺序排列,可以依次入队和出队,有序号关系,可以取出某序 ...

  2. vrp 节约算法 c++_数据结构和算法(Golang实现)(8.1)基础知识-前言

    基础知识 学习数据结构和算法.我们要知道一些基础的知识. 一.什么是算法 算法(英文algorithm)这个词在中文里面博大精深,表示算账的方法,也可以表示运筹帷幄的计谋等.在计算机科技里,它表示什么 ...

  3. 量子计算机 漫画,漫画 | 10分钟看懂量子比特、量子计算和量子算法

    原标题:漫画 | 10分钟看懂量子比特.量子计算和量子算法 请做好准备,即将进入烧脑模式! 宏观世界的生活经验很多都是表象.比如,你可能认为世界的运行是确定的.可预测的:一个物体不可能同时处于两个相互 ...

  4. ARCore中根据屏幕坐标计算射线的算法

    ARCore中根据屏幕坐标计算射线的算法 ARCore中提供了根据屏幕坐标.视口大小及view. project矩阵计算从屏幕坐标发射一条射线的方法,此方法用于3D拾取. 1 class Ray { ...

  5. oracle百分比变成小数,oracle中计算百分比,并同时解决小数点前0不显示的问题...

    select a.catalog_name,decode(substr(trunc((a.s/b.count2),4)*100||'%',0,1),'.',replace(trunc((a.s/b.c ...

  6. MySql计算百分比

    根据相应条件抽出相应count数(myCount) 抽出总count数(totalCount) 计算百分比:myCount / totalCount * 100 四舍五入:使用ROUND函数ROUND ...

  7. 相似度计算 java_Java基于余弦方法实现的计算相似度算法示例

    Java基于余弦方法实现的计算相似度算法示例 引导语:Java 编程语言的风格十分接近C.C++语言.Java是一个纯的面向对象的程序设计语言,以下是小编整理的Java基于余弦方法实现的`计算相似度算 ...

  8. java 计算百分比_java前后台计算百分比(保留2位小数)

    1.后台计算百分比: **方法一: public String getPercent(Integer num,Integer totalPeople ){ String percent ; Doubl ...

  9. python怎么计算百分比_python计算两个数的百分比方法

    工作中遇到了要计算两个数百分比的问题,python 2.7 环境. 代码: #!/usr/bin/env python #function: 计算百分比 #USAGE: python calculat ...

最新文章

  1. 提高github下载速度
  2. linux网络培训题目,linux 网络学习问题命令总结
  3. 背英语单词很困难,不妨学习一下词根词缀吧(每天10个词根、词缀)Part 1
  4. 背景颜色及背景图片相关的属性
  5. 【java.lang.NoClassDefFoundError: t/SpringBootConfiguration】
  6. oracle互换2条记录,ORACLE中确定表里哪些行是彼此互换的
  7. http协议(十)实体首部字段
  8. 1、微博RPC框架Motan
  9. C#反编译工具Reflector.exe教程
  10. ad中那个快捷键是重复上一部_PPT中十大快捷键
  11. 级数 p级数 q级数 调和级数为什么叫做“调和”级数 等比数列求和公式和等差数列求和 斜率:
  12. WPF Binding表达式
  13. 老电脑可以升级win10系统吗
  14. cocoa和cocoa Touch的区别
  15. 怎样设计一个好的社交网站
  16. 五款免费同步备份软件介绍
  17. 面试时如何回答你的缺点是什么?
  18. Vue 解决兄弟组件之间传值问题
  19. MOS管和三极管的工作原理对比
  20. User root is not allowed to impersonate anonymous

热门文章

  1. java 分割符文件读写_用分隔符读取java文件
  2. Android切图规范
  3. 【老九学堂】【C++】C++的发展史
  4. canvas 模拟的公转自转
  5. python初始画笔_Python基本画笔标题-1,基础,刷,题录
  6. 一加7pro手机是2k屏,小米10为什么不用2k屏
  7. Puppeteer入门
  8. Android ANR 搜集
  9. TIA博途SCL编程学习22_奖金计算
  10. 画洗碗机器人的思维导图_一种智能洗碗机器人的制作方法