1.问题描述
有一名潜伏在敌人阵地附近的狙击手,已知该狙击手射击1发子弹的命中率以及被发现的概率如下表所示:
距离(百米) | 4 | 5 | 6 | 7 | 8 | 9 |
|
---|---|---|---|---|---|---|---|
命中率 | 100% | 100% | 90% | 80% | 70% | 60% |
|
暴露率 | 40% | 35% | 30% | 25% | 20% | 18% |
|
假设狙击手一旦被暴露就要撤离阵地,请计算在不同距离上,该狙击手在暴露前平均能够狙杀多少名敌人,并确定射击的最优距离。
2.代码实现
import numpy as np
list_kill=[1,1,0.9,0.8,0.7,0.6,0.5]
list_exposure=[0.4,0.35,0.3,0.25,0.2,0.18,0.15]
N=10000
for j in range(4,11):
kill_num=0 #击杀总数
for i in np.arange(N):
exposure=np.random.random(1)#exposure:暴露率
kill=np.random.random(1)#kill:命中率
if kill<=list_kill[j-4]:
kill_num+=1
while exposure>=list_exposure[j-4]:
kill=np.random.random(1)
if kill<=list_kill[j-4]:
kill_num+=1
exposure=np.random.random(1)
print('{}米平均击杀数为{}'.format(j*100,kill_num/N))
3.输出结果
400米平均击杀数为2.5203
500米平均击杀数为2.8589
600米平均击杀数为2.9782
700米平均击杀数为3.1661
800米平均击杀数为3.4708
900米平均击杀数为3.4096
1000米平均击杀数为3.398
由此我们可以看出在800米的距离下平均击杀人数最高,所以在制作狙击枪时的有效射击距离一定要超过800米。