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

最高投标限价下浮率在开标前在开标现场采取逐标段摇珠方式确定,摇珠操作办法如下:在下浮率摇珠范围内,以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. C#使用Castle实现AOP面向切面编程

    Castle.Core 本质是创建继承原来类的代理类,重写虚方法实现AOP功能.个人觉得比Autofac用着爽 使用方式比较简单,先新建一个控制台项目,然后在Nuget上搜索Castle.Core并安 ...

  2. 修改jira数据库配置

  3. sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set 的解决办法

    Linux新建用户 ,sudo报错: sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set 解决办法:重置一下s ...

  4. 《ucore lab1 exercise2》实验报告

    资源 ucore在线实验指导书 我的ucore实验代码 题目:使用qemu执行并调试lab1中的软件 为了熟悉使用qemu和gdb进行的调试工作,我们进行如下的小练习: 从CPU加电后执行的第一条指令 ...

  5. kibana发音 logstash发音 ElasticSearch发音 音标 翻译

    kibana [kɪbana] 剋吧那 kei ba na == 扩展 logstash [lɔɡ] [stæ:ʃ] 楼个四die吃 == ElasticSearch [ɪˈlæstɪk] [sɜːt ...

  6. 【C++札记】标准模板库string

    介绍 c++中字符串string对象属于一个类,内置了很多实用的成员函数,操作简单,方便更直观. 命名空间为std,所属头文件<string> 注意:不是<string.h>. ...

  7. Spring cloud的各类组件

    Spring cloud 的各类组件 1.注册中心 eureka 2.ribbon 3.feign 4.hystirx 断路器 5.高速缓存器 redis 6.断路器Dashboard监控仪表盘

  8. scrapy 爬取纵横网实战

    前言 闲来无事就要练练代码,不知道最近爬取什么网站好,就拿纵横网爬取我最喜欢的雪中悍刀行练手吧 准备 python3 scrapy 项目创建: cmd命令行切换到工作目录创建scrapy项目  两条命 ...

  9. System函数的使用说明

    #inlcude<stdlib.h> int system(const char* command) 功能:在已经运行的程序中调用另一个外部程序 参数:外部可执行程序的名字 返回值:不同系 ...

  10. SAS学习笔记12 SAS数据清洗和加工

    set语句纵向合并 我们把a1和b1进行合并,并区分是来自哪个数据集,会用到in=选项 in=a是产生临时变量a,由于它是a1的选项,所以a的值=1(来自a1)或者=0(不来自a1) in=b是产生临 ...