问题的形成
假设我们需要在给定的值范围内创建一组不重复的整数随机数。 旅途中的例子:
- 为产品或用户生成唯一的随机代码
- 将人员分配给任务(从列表中随机分配一个)
- 搜索查询中的单词排列 (hello seo-shnikam)
- 玩乐透等
方法1.简单
首先,让我们考虑一个简单的选项:我们需要从 10 到 1 随机获取 10 个整数。使用 Excel 中内置的函数 案例之间 (边缘之间) 不保证唯一性。 如果您在工作表单元格中输入它并将其复制到 10 个单元格中,则很容易发生重复:
因此,我们将走另一条路。
所有版本的Excel都有一个功能 秩 (响),用于排名,或者换句话说,确定一个数字在集合中的最高位置。 列表中最大的数字排名=1,排名第二的数字排名=2,依此类推。
让我们在单元格 A2 中输入函数 信息系统 (兰德) 没有参数并将公式复制到 10 个单元格。 该函数将为我们生成一组 10 个从 0 到 1 的随机小数:
下一栏我们介绍函数 秩确定每个接收到的随机数在排名中的位置:
我们在 B 列中得到了我们想要的——从 1 到 10 的任意数量的非重复随机整数。
纯粹从理论上讲,可能会出现一种情况 信息系统 将在 A 列中为我们提供两个相同的随机数,它们的等级将匹配,并且我们将在 B 列中得到重复。但是,鉴于精度为小数点后 15 位,这种情况的可能性非常小。
方法2.复杂
这种方法稍微复杂一些,但只使用了一个数组公式。 假设我们需要在一张纸上创建一个 9 到 1 范围内的 50 个非重复随机整数的列表。
在A2单元格输入以下公式,最后点击 Ctrl + Shift + Enter (将其作为数组公式输入!)并将公式复制到所需的单元格数量:
方法 3. 宏
当然,您可以使用 Visual Basic 编程来解决这个问题。 在一篇关于随机抽样的旧文章中,我已经引用了 Lotto 数组宏函数,它从给定的间隔产生所需数量的随机非重复数字。
- 如何统计一个范围内唯一值的数量
- 从列表中随机选择元素