鱼塘中有多少鱼

来自计算思维百科
跳转至: 导航搜索
鱼塘中有多少鱼.png

老李在农贸市场开了一个鲜鱼销售店,经常要到乡村去整塘购买渔民养的鱼,并每天从池塘中打鱼到门店中进行销售。在购买整塘的鱼时,需要根据鱼的重量与渔民签订合同,计算合同金额。可是,该怎么估算鱼塘中鱼的重量呢?在估算时,应使鱼的损失尽量小,并能尽量准确的估算出鱼的重量,并且这种方法要让双方都能够接受。

解决方案

方案一

称重。将池塘的鱼都打捞起来再称重,这样可以得到较精确的重量。但是,将鱼全部打捞起来再称重再放回池塘,会造成一大部分鱼的死亡,鱼的损失较大。

方案二

将鱼塘划分成几个相等的区域,然后将一个区域中的鱼打捞上来称重,再将该区的鱼乘以总的区域数,即可得到总重量,可是,这种方法得到的重量明显是无法保证其准确度的,因为区域的划分不可能完成均等,而区内的鱼的数量也有可能相差较大。

方案三

利用概率来模拟估算出池塘鱼的重量。具体步骤如下:

  1. 从鱼塘中捞出100条鱼进行称重并标记
  2. 过一段时间后,在池塘不同位置打捞,将一网打捞上来的鱼进行称重,并统计有标记和无标记的鱼的数量。
  3. 多次重复第2步
  4. 将记录进行计算,统计有标记的鱼被打捞上来的概率。
  5. 根据概率既可以得到整池塘鱼的数量和重量。

下给出一个例子,如

(1)打捞了100条鱼得到其重量为216KG,并做标记

(2)1h后,随机选取位置打捞鱼,记录其有标记数和无标记数,10次打捞记录如下。

打捞

次数

1

2

3

4

5

6

7

8

9

10

总计

标记

2

3

1

3

4

3

1

2

2

1

22

标记

25

23

18

22

25

18

10

15

14

13

183

(3)计算。10次打捞的有标记鱼的数量为22,无标记的鱼的数量为183,则有标记鱼的所占的比率为22/205=0.1073,也就是说,每10条鱼中有1条是做了标记的。那么,可方便地得出整塘鱼的数量为:100/0.1073≈932,被标记鱼的每条重量约为216/100=2.16KG,故整塘鱼的重量为2.16x932≈2013.

可以体现的计算思维

从上那个面的案例中,我们可以发现有两个问题是我们需要权衡的,一个是鱼的损失,一个是对鱼的重量的准确度的要求。在方案一中,选择的是牺牲了鱼来获取准确度,方案二则是牺牲了准确度来使得鱼的损失变小,在计算机中,有着同样的问题,时间与空间的权衡,正如同问题中的鱼的存活度与重量的准确度的考虑,这一点体现了计算思维的折中思想。方案二中通过求一个区域的重量来得到整个池塘鱼的重量的方法,将问题规模变小了,同样对应着计算思维中的规约思想。而方案三则是通过捞鱼的随机过程来模拟鱼在池塘中的游动,解决了因为鱼的动态性造成的不准确性,从而估算出整个池塘鱼的数量。在计算中,就有利用蒙特卡洛数来模拟现实中的随机场景从而得到一个比较准确的值且可以减少空间时间的开销,这就是计算思维中的仿真思想。