#!/usr/bin/python# -*- coding:utf-8 -*-import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
defclip(x, path):for i inrange(len(x)):if x[i]>= path:
x[i]%= path
if __name__ =="__main__":
mpl.rcParams['font.sans-serif']=[u'SimHei']
mpl.rcParams['axes.unicode_minus']=False
path =5000# 环形公路的长度
n =100# 公路中的车辆数目
v0 =50# 车辆的初始速度
p =0.3# 随机减速概率
Times =3000
np.random.seed(0)
x = np.random.rand(n)* path
x.sort()
v = np.tile([v0], n).astype(np.float)
plt.figure(figsize=(10,8), facecolor='w')for t inrange(Times):
plt.scatter(x,[t]*n, s=1, c='k', alpha=0.05)for i inrange(n):if x[(i+1)%n]> x[i]:
d = x[(i+1)% n]- x[i]# 距离前车的距离else:
d = path - x[i]+ x[(i+1)% n]if v[i]< d:if np.random.rand()> p:
v[i]+=1else:
v[i]-=1else:
v[i]= d -1
v = v.clip(0,150)
x += v
clip(x, path)
plt.xlim(0, path)
plt.ylim(0, Times)
plt.xlabel(u'车辆位置', fontsize=16)
plt.ylabel(u'模拟时间', fontsize=16)
plt.title(u'环形公路车辆堵车模拟', fontsize=20)
plt.tight_layout(pad=2)
plt.show()
计算赔率
#!/usr/bin/python# -*- coding:utf-8 -*-import operator
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
from time import time
import math
defis_prime(x):return0notin[x % i for i inrange(2,int(math.sqrt(x))+1)]defis_prime3(x):
flag =Truefor p in p_list2:if p > math.sqrt(x):breakif x % p ==0:
flag =Falsebreakif flag:
p_list2.append(x)return flag
if __name__ =="__main__":
a =2
b =100000# # 方法1:直接计算# t = time()# p = [p for p in range(a, b) if 0 not in [p % d for d in range(2, int(math.sqrt(p)) + 1)]]# print(time() - t)# print(p)## # 方法2:利用filter# t = time()# p = filter(is_prime, range(a, b))# print(time() - t)# print(p)## # 方法3:利用filter和lambda# t = time()# is_prime2 = (lambda x: 0 not in [x % i for i in range(2, int(math.sqrt(x)) + 1)])# p = filter(is_prime2, range(a, b))# print(time() - t)# print(p)## # 方法4:定义# t = time()# p_list = []# for i in range(2, b):# flag = True# for p in p_list:# if p > math.sqrt(i):# break# if i % p == 0:# flag = False# break# if flag:# p_list.append(i)# print(time() - t)# print(p)## # 方法5:定义和filter# p_list2 = []# t = time()# filter(is_prime3, range(2, b))# print(time() - t)# print(p_list2)print('---------------------')
a =1180
b =1230
p_list2 =[]
p = np.array(filter(is_prime3,range(2, b+1)))
p = p[p >= a]print(p)
p_rate =float(len(p))/float(b-a+1)print('素数的概率:', p_rate,'\t',)print('公正赔率:',1/p_rate)print('合数的概率:',1-p_rate,'\t',)print('公正赔率:',1/(1-p_rate))
Pandas
#!/usr/bin/python# -*- encoding: utf-8import numpy as np
import pandas as pd
from fuzzywuzzy import fuzz
from fuzzywuzzy import process
defenum_row(row):print(row['state'])deffind_state_code(row):if row['state']!=0:print(process.extractOne(row['state'], states, score_cutoff=80))defcapital(str):returnstr.capitalize()defcorrect_state(row):if row['state']!=0:
state = process.extractOne(row