购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.3 模拟算法

所谓模拟法,就是编写程序模拟现实世界中事物的变化过程,从而完成相应任务的方法。模拟法对算法设计的要求不高,需要按照问题描述的过程编写程序,程序按照问题要求的流程运行,从而求得问题的解。

1.转盘赌选择概述

转盘赌选择策略是先将个体的相对适应值 记为 p i ,然后根据选择概率{ p i i =1,2,…, N },按图3 - 1所示把圆盘分成 N 份,其中第 i 扇形的中心角为2π p i 。在进行选择时,可以假想转动如图3 - 1所示的圆盘,如果某参照点落入第 i 个扇形内,则选择个体 i 。这种选择策略可以实现如下:先生成一个[0,1]内的随机数,如果 p 1 + p 2 +…+ p i -1 r p 1 + p 2 +…+ p i ,则选择个体 i 。显然,小扇区的面积越大,参照点落入其中的概率也越大,即个体的适应值越大,它被选择到的机会也就越多,其基因被遗传到下一代的可能性也越大。

图3-1 转盘器选择

2.实现转盘赌游戏

假设各奖项在轮盘上所占比例为

·'一等奖':0~0.08

·'二等奖':0.08~0.3

·'三等奖':0.3~1.0

递进的两个题目如下:

(1)转动轮盘(随机产生一个0~1的数)1万次,输出每个奖项的分布。

提示: 使用字典来完成,首先定义一个字典salary来表示几等奖和它的中奖概率,再构造一个字典now来表示中几等奖的情况(键为几等奖,值为次数)。

运行程序,输出如下:

     {'一等奖':(0,0.08),'二等奖':(0.08,0.3),'三等奖':(0.3,1.0)}
     中奖情况分布:
     ('三等奖',6952)
     ('二等奖',2248)
     ('一等奖',800)

(2)模拟一个用户转动轮盘的过程。

①输出用户转动10次轮盘的奖项分布情况。

②已知积分:转到一等奖,得5分,转到二等奖,得3分;转到三等奖,得1分。输出用户转动10次的得分情况;

③根据积分领奖品(自己构造奖项就可以)。

·如果大于或等于30分,输出,奖励奥运会吉祥物。

·如果大于或等于20分,小于30分,输出,奖励饮水壶。

·如果大于或等于10分,小于20分,输出,奖励水杯。

·如果大于或等于0,小于10分,输出,奖励小奖品。

运行程序,输出如下: hWzdAoh3MpC8CSUit02Dcm2HBpsSAMkbdd4bzDHzIT9HVAI4swMDqieSCCAYfm7g

     欢迎参加轮盘赌游戏:
     中奖情况分布:
     ('三等奖', 9)
     ('二等奖', 1)
     积分:12分
     奖励水杯!
点击中间区域
呼出菜单
上一章
目录
下一章
×