题目是文绉绉的说法,背景来于群里提问,是一份文件里面关于最高投标限价的确定。

最高投标限价下浮率在开标前在开标现场采取逐标段摇珠方式确定,摇珠操作办法如下:在下浮率摇珠范围内,以0.1%为以一档次增序确定摇珠号码,不少于31个球,每个标段各一次性摇取3个球(摇出的球不放回),摇出3个球对应的下浮率的平均值即为本标段的下浮率(注:下浮率的平均值四舍五入取整到0.001%)

最高评标限价=最高投标限价 x (1 - 下浮率)

用简单粗暴的数学应用题来描述,就是

1到31中依次不放回挑三个数字,这三个数字的平均值为a,我要从1到31中选一个数字,这个数字高于a百分1的话扣1.5分,低百分1的话就扣0.5分,问选择哪个数字扣分最少的概率最大?

我用了随机抽取和平均值判断的方法来计算

import random
s = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31] def choose(s,no):
#挑选三个数字
dic = {}
c = random.sample(s,3)
ave = (c[0]+c[1]+c[2])/3
a = random.sample(c,1)
a = float(a[0])
if a > ave:
score = ((((a - ave)/ave)*100)//1)*1.5
else:
score = ((((ave - a)/ave)*100)//1)*0.5
dic[no] = [a,score]
return dic
flag = 1000000
record = {}
no = 0
while flag:
k = choose(s,no)
record.update(k)
flag = flag - 1
no += 1
r = list(record.values())#如果按照平均值来算
final={}
for i in s:
count = 0
sumary = 0
for choice in r:
if choice[0] == i:
sumary += choice[1]
count += 1
if count!= 0:
final[i] = sumary/count
else:
final[i] = 0 j = list(final.items())
j.sort(key = lambda x:x[1],reverse=True) print(j)

100万次投掷结果

[(31, 83.82834638329605), (30, 79.52800049531004), (29, 76.17331441402108), (28, 71.87696804726407), (27, 68.18778308238463), (26, 64.67018198786748), (25, 60.67964184142264), (24, 56.45526274996125), (23, 52.392923563325276), (22, 48.68755592582308), (21, 44.58517213672044), (1, 44.5334890483851), (20, 40.74669140383426), (2, 39.63405063685342), (19, 37.418869140804865), (3, 35.294571004085675), (18, 33.83776818704008), (4, 31.641003948110548), (17, 31.04532411835488), (5, 28.63851921274602), (16, 28.615155057839036), (6, 26.1258323267986), (15, 25.99136919466403), (14, 24.509914748774317), (7, 24.21303671437461), (13, 23.11067443437519), (8, 22.75180413169387), (12, 22.04871418304534), (9, 21.76769120800572), (11, 21.743313360924084), (10, 21.466741230931742)]

用python计算最高投标限价的更多相关文章

  1. [转载] python 计算字符串长度

    本文转载自: http://www.sharejs.com/codes/python/4843 python 计算字符串长度,一个中文算两个字符,先转换成utf8,然后通过计算utf8的长度和len函 ...

  2. Python计算斗牛游戏的概率

    Python计算斗牛游戏的概率 过年回家,都会约上亲朋好友聚聚会,会上经常会打麻将,斗地主,斗牛.在这些游戏中,斗牛是最受欢迎的,因为可以很多人一起玩,而且没有技术含量,都是看运气(专业术语是概率). ...

  3. 利用Python计算π的值,并显示进度条

    利用Python计算π的值,并显示进度条  第一步:下载tqdm 第二步;编写代码 from math import * from tqdm import tqdm from time import ...

  4. 用Python计算幂的两种方法,非递归和递归法

    用Python计算幂的两种方法: #coding:utf-8 #计算幂的两种方法.py #1.常规方法利用函数 #不使用递归计算幂的方法 """ def power(x, ...

  5. Python计算分位数

    Python计算分位数    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/gdkyxy2013/article/details/80911514 ...

  6. python 计算校验和

    校验和是经常使用的,这里简单的列了一个针对按字节计算累加和的代码片段.其实,这种累加和的计算,将字节翻译为无符号整数和带符号整数,结果是一样的. 使用python计算校验和时记住做截断就可以了. 这里 ...

  7. 为了用python计算一个汉字的中心点,差点没绞尽脑汁活活累死

    为了用python计算一个汉字的中心点,差点没绞尽脑汁活活累死

  8. python计算时间差的方法

    本文实例讲述了python计算时间差的方法.分享给大家供大家参考.具体分析如下: 1.问题: 给定你两个日期,如何计算这两个日期之间间隔几天,几个星期,几个月,几年? 2.解决方法: 标准模块date ...

  9. 用Python计算最长公共子序列和最长公共子串

    如何用Python计算最长公共子序列和最长公共子串 1. 什么是最长公共子序列?什么是最长公共子串? 1.1. 最长公共子序列(Longest-Common-Subsequences,LCS) 最长公 ...

随机推荐

  1. php 字典升序从小到大方法

    /* 字典升序*/ function formatParaMap($paraMap) { $buff = ""; ksort($paraMap); foreach ($paraMa ...

  2. TiKV事务实现浅析

    TiKV事务实现浅析 Percolator事务的理论基础 Percolator的来源 Percolator事务来源于Google在设计更新网页索引的系统时提出的论文Large-scale Increm ...

  3. 提高.NET应用性能

    提高.NET应用性能的方法 写在前面 设计良好的系统,除了架构层面的优良设计外,剩下的大部分就在于如何设计良好的代码,.NET提供了很多的类型,这些类型非常灵活,也非常好用,比如List,Dictio ...

  4. Linux 时间以及时间间隔的简单处理.

    最近想知道自己的一个部署脚本的耗时, 中午时间看了一下最简单的Linux 时间函数的处理 我这里的处理非常简单, 仅仅是够用而已. 处理过程. 1. 获取当前时间: time1=`date` 或者是 ...

  5. 记一次Spring Cloud压力测试

    前言 公司打算举办一场活动,现场参与活动人数比较多.针对于可能访问比较密集的接口进行压力测试.使用jmeter进行测试,请求并发稍微多些,系统就会挂起. 针对压力测试出现的问题,因为并发超过1秒钟10 ...

  6. 某 游戏公司 php 面试题

    1.实现未知宽高元素的水平垂直居中,至少两种方法. <div, class="father"> <div class="son">< ...

  7. cliff

    let me tell you,buddy. there's a faster gun. cming over yonder,when tomorrow comes.

  8. python标准库之collections介绍

    collections----容器数据类型 collections模块包含了除list.dict.和tuple之外的容器数据类型,如counter.defaultdict.deque.namedtup ...

  9. sqlserver时间戳

    SELECT DATEADD(S,1576464113 + 8 * 3600,'1970-01-01 00:00:00') --时间戳转换成普通时间 SELECT DATEDIFF(S,'1970-0 ...

  10. Mybatis分页的方式以及实现

    方式 分页的分类: 1.物理分页:只从数据库中查询当前页的数据 优点:不占用很多内存   缺点:效率比价低(相比于逻辑分页) 2.逻辑分页:从数据库将所有记录查询出来,存储到内存中,展示当前页,然后数 ...