搜索
写经验 领红包
 > 地理

随机迭代器(如何使用迭代计算)

导语:神奇的迭代运算,可以使随机产生的数据各不相同

在前几篇文章中讲了随机数的产生,进而又深入地讲解了如何随机产生字母和数字组合字符串的办法。既然是随机数,那么难免会有重复的数据,那么问题来了,有没有办法直接产生不重复的随机数呢?答案是肯定的,今天就要讲解。

当然,对于每篇文章,我这里的侧重点有所不同,虽然目的是解决问题,但我的重点不是放在解决问题的本身,而是重点放在函数的讲解,及如何正确的利用函数。至于解决问题,方法很多,可以用这种办法,也可以用那种办法,有的简单些,有的复杂些,都没有问题,因为这只是个人的习惯问题。比如从平壤飞到新加坡,可以经由韩国,也可以经由北京,我们看到的结果是到了新加坡,而不是去考虑哪种路径是最短的。比如今天的这个问题,你可以用函数直接去解决,也可以用VBA去解决,都可以。我今天侧重讲函数,所以不会用VBA的方法。再比如,分隔字符串,可以用SPLIT函数,也可以用截取函数,如果我的侧重点不在数组上,就不会引入SPLIT这个函数,而是重点放在用截取函数来解决问题。

好了,闲话少叙。我们引入正题.今日的问题是:如何产生8个,不重复,范围是1到100的随机数。

老规矩,为了解决这个问题,我们今天还要重点复习一下COUNTIF函数和迭代的概念。

首先,COUNTIF函数。Countif函数是Microsoft Excel中对指定区域中符合指定条件的单元格计数的一个函数,该函数的语法规则如下:countif(range,criteria)

参数:range 要计算其中非空单元格数目的区域

参数:criteria 以数字、表达式或文本形式定义的条件。

然后,我们再复习一下迭代的概念:迭代iteration,是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次"迭代",而每一次迭代得到的结果会作为下一次迭代的初始值。重复执行一系列运算步骤,从前面的量依次求出后面的量的过程。

有了上述两个知识点的回顾,我们开始解决今日的问题,思路:想要产生一组不重复的数值,势必要对是否重复进行判断,这个就要用到Countif函数了,在某一区域某个数值为1,那么就是不重复了。如果不为1,即重复了,怎么办呢?那就只能再次进行运算,直到上面的数值为1为止,这个重复运算就是迭代了。

好了,我们按照上面思路来书写我们的函数;

在C5 单元格录入下面的公式:=COUNTIF($C$6:$J$6,C6)

公式讲解:上面的公式就是统计$C$6:$J$6范围内,C6单元格数字出现的次数。此结果如果不重复,必须为1.

在C6单元格录入下面的公式:=IF(SUM($C$5:$J$5)=8,C6,RANDBETWEEN(1,100))

公式讲解:RANDBETWEEN(1,100)就是随机产生一个从1到100的数字,共产生8个数字,每个数字出现一个,那么总和肯定是8,即SUM($C$5:$J$5)=8,此时C6的单元格数值不用再变化,还是C6,如果SUM($C$5:$J$5)不为8,那么就还要继续计算,直到结果是8为止。

如何设置重复的计算呢?这就是迭代的设置:如图,我们在本题中迭代次数设为50,即即可以满足要求了。

点开:工具,选项,重新计算,勾选迭代计算,并录入50,点确定。

看返回的结果:

在50次迭代运算中,完成了上述的正确结果的计算。

由此可以看出,迭代运算,类似于FOR,NEXT的循环。

今日内容技巧及提升:

1 什么是迭代运算?

2 COUNTIF函数的意义及用法。

3 产生随机不重复数据的思路是什么?

4 如果把上述的迭代次数改为20,10,5,1呢?结果会如何?读者可以先思考后测试。

5 如果把上述的随机数范围改为1到7,是否能有正确的结果呢?

以上问题请读者分析。

本文内容由小奈整理编辑!