如何在Excel中生成无重复的随机数

  • Share This
Michael Brown

在这篇文章中,我们将讨论几个不同的公式,以在Excel中随机化而不重复的数字。 此外,我们将向你展示一个通用的随机生成器,可以产生一个没有重复的随机数字、日期和字符串的列表。

你可能知道,Microsoft Excel有几个生成随机数的函数,如RAND、RANDBETWEEN和RANDARRAY。 然而,不能保证任何函数的结果都是无重复的。

本教程解释了创建唯一随机数列表的几个公式。 请注意,有些公式只在最新版本的Excel 365和2021中工作,而其他公式可以在任何版本的Excel 2019、Excel 2016、Excel 2013和更早的版本中使用。

    获取一个具有预定步骤的唯一随机数列表

    只在支持动态数组的Excel 365和Excel 2021中工作。

    如果你有最新的Excel版本,最简单的方法就是让你的 唯一的随机数列表 是结合3个新的动态数组函数:SORTBY、SEQUENCE和RANDARRAY。

    sortby(sequence( n ), RANDARRAY( n ))

    在哪里? n 是你想得到的随机值的数量。

    例如,要创建一个5个随机数的列表,用5表示 n :

    =sortby(sequence(5), randarray(5))

    在最上面的单元格中输入公式,按回车键,结果会自动溢出到指定数量的单元格中。

    正如你在下面的截图中看到的,这个公式实际上是 将1至5的数字按随机顺序排序 如果你需要一个没有重复的经典随机数发生器,那么请查看下面的其他例子。

    在上面的公式中,你只定义了要填充多少行。 所有其他参数都保留为默认值,这意味着列表将从1开始,并以1递增。 如果你想要一个不同的第一个数字和递增,那么为第3个参数设置你自己的值( 开始 )和第四届( 阶梯 )参数的SEQUENCE函数。

    例如,要从100开始,以10为单位递增,使用这个公式。

    =sortby(sequence(5, , 100, 10), randarray(5))

    这个公式如何运作。

    由内而外的工作,以下是该公式的作用。

    • SEQUENCE函数根据指定的或默认的起始值和递增的步长,创建一个连续的数字数组。 这个序列进入到 阵列 SORTBY的说法。
    • RANDARRAY函数创建了一个与序列大小相同的随机数数组(在我们的例子中是5行1列)。 最小值和最大值其实并不重要,所以我们可以把这些留作默认值。 这个数组会被送到 by_array SORTBY的说法。
    • SORTBY函数使用由RANDARRAY产生的随机数数组对SEQUENCE产生的连续数进行排序。

    请记住,这个简单的公式创建了一个不重复的随机数列表,其中有一个 预定的步骤 要绕过这一限制,请使用下面描述的公式的高级版本。

    生成一个没有重复的随机数列表

    只在支持动态数组的Excel 365和Excel 2021中工作。

    要在Excel中生成没有重复的随机数,请使用下面的一个通用公式。

    随机整数 :

    index(unique(randarray( n ^2, 1, , 最大 , true)), sequence( n ))

    随机小数 :

    index(unique(randarray( n ^2, 1, , 最大 , false)), sequence( n ))

    在哪里?

    • N 是要生成的值的数量。
    • 闵行区 是最小值。
    • 最大 是最高值。

    例如,要创建一个5人的列表 随机整数 从1到100,没有重复,使用这个公式。

    =index(unique(randarray(5^2, 1, 1, 100, true)), sequence(5))

    产生5个独特的随机 十进制数字 ,在RANDARRAY的最后一个参数中放入FALSE,或者省略这个参数。

    =index(unique(randarray(5^2, 1, 1, 100)), sequence(5))

    这个公式如何运作。

    乍一看,这个公式可能有点棘手,但仔细一看,它的逻辑非常简单明了。

    • RANDARRAY函数根据你指定的最小值和最大值创建一个随机数组。 为了确定生成多少个值,你将所需的唯一数提高到2的幂数。 因为生成的数组可能没有人知道有多少个重复的,你需要提供足够的值数组供UNIQUE选择。 在这个例子中,我们只需要5个唯一的但我们指示RANDARRAY产生25(5^2)个随机数。
    • UNIQUE函数删除了所有的重复,并将一个没有重复的数组 "喂 "给INDEX。
    • 从UNIQUE传递的数组中,INDEX函数提取了第一个 n 因为数值已经是随机的了,所以哪些数值存活并不重要。

    注意:在非常大的数组上,这个公式可能有点慢。 例如,为了得到一个1000个唯一数字的列表作为最终结果,RANDARRAY将不得不在内部生成100万个随机数(1000^2)的数组。 在这种情况下,你可以将其乘以,而不是提高到幂数 n 请记住,传递给UNIQUE函数的数组越小(相对于所需的唯一随机值的数量而言越小),并非溢出区的所有单元格都会被填满结果的机会就越大。

    在Excel中创建一个不重复的随机数范围

    只在支持动态数组的Excel 365和Excel 2021中工作。

    要生成一个没有重复的随机数范围,你可以使用这个公式。

    index(unique(randarray( n ^2, 1, , 最大 )), SEQUENCE( 行数 , 专栏 ))

    在哪里?

    • n 是要填充的单元格数量。 为了避免手工计算,你可以用(行数*列数)来提供。 例如,要填充10行5列,使用50^2或(10*5)^2。
    • 行数 是要填充的行数。
    • 专栏 是要填充的列数。
    • 闵行区 是最低值。
    • 最大 是最高值。

    你可能会注意到,这个公式与前面的例子基本相同,唯一不同的是SEQUENCE函数,在本例中它同时定义了行和列的数量。

    例如,要用1到100的唯一随机数填充一个10行3列的范围,使用这个公式。

    =index(unique(randarray(30^2, 1, 1, 100)), sequence(10, 3))

    并且会产生一个没有重复数字的随机小数数组。

    如果你需要整数,那么将RANDARRAY的最后一个参数设为TRUE。

    =index(unique(randarray(30^2, 1, 1, 100, true)), sequence(10,3))

    如何在Excel 2019、2016和更早的版本中生成唯一的随机数

    由于除Excel 365和2021之外的其他版本都不支持动态数组,因此上述解决方案在早期版本的Excel中都无法使用。 然而,这并不意味着完全没有解决方案,你只需要多执行几个步骤。

    1. 创建一个随机数列表。 根据你的需要,使用其中之一。
      • RAND函数可以生成0到1之间的随机小数,或
      • RANDBETWEEN函数在你指定的范围内产生随机整数。

      请确保生成的数值比你实际需要的要多,因为有些会是重复的,你以后会删除它们。

      在这个例子中,我们通过使用下面的公式创建一个1到20之间的10个随机整数的列表。

      =介于(1,20)之间

      要一次性在多个单元格中输入公式,请选择所有单元格(本例中为A2:A15),在公式栏中输入公式,然后按Ctrl + Enter 。 或者你可以像往常一样在第一个单元格中输入公式,然后根据需要向下拖动到多个单元格。

      总之,结果会是这样的。

      你可能注意到,我们在14个单元格中输入了公式,尽管最终我们只需要10个独特的随机数字。

    2. 将公式改为数值。 由于RAND和RANDBETWEEN都会随着工作表上的每一个变化而重新计算,你的随机数列表会不断变化。 为了防止这种情况发生,可以使用 粘贴特殊> 价值 来将公式转换为数值,这在《如何阻止随机数的重新计算》中有所解释。

      为了确保你做得对,选择任何一个数字,看一下公式栏。 现在它应该显示一个值,而不是一个公式。

    3. 要做到这一点,选择所有的数字,去到 数据 标签> 数据工具 组,并点击 删除重复的内容 删除重复的内容 详细步骤请参见《如何删除Excel中的重复数据》。

    完成了!所有重复的数字都消失了,你现在可以删除多余的数字。

    提示:你可以使用我们先进的Duplicate Remover for Excel,而不是Excel的内置工具。

    如何阻止随机数变化

    Excel中的所有随机化函数,包括RAND、RANDBETWEEN和RANDARRAY都是不稳定的,这意味着每次改变电子表格时,它们都会重新计算。 因此,每次改变都会产生新的随机值。 为了防止自动生成新的数字,可以使用粘贴特殊>值功能,用静态值代替公式。 具体方法如下。

    1. 选择所有带有随机公式的单元格,按Ctrl+C复制它们。
    2. 右键单击所选范围并单击 粘贴专用 > 价值观 或者,你可以按Shift + F10,然后按V,这是该选项的快捷键。

    详细步骤请见《如何在Excel中把公式改为数值》。

    用于Excel的无重复的随机数发生器

    我们的终极套件的用户其实不需要上述任何解决方案,因为他们在Excel中已经有了一个通用的随机发生器。 这个工具可以很容易地产生一个不重复的整数,小数的数字,日期和唯一的密码列表。 下面是方法。

    1. 关于 Ablebits工具 标签,点击 随机化 > 随机生成器 .
    2. 选择要填充随机数的范围。
    3. 关于 随机生成器 窗格,执行以下操作。
      • 选择所需的值类型:整数、实数、日期、布尔值、自定义列表或字符串(非常适合生成强大的唯一密码!)。
      • 设置了 来自 价值。
      • 选择 独特的价值 复选框。
      • 点击 生成 .

    就这样!选定的范围一次就被非重复的随机数填满。

    如果你想尝试这个工具,并探索我们的终极套件所包含的其他迷人的功能,欢迎你下载试用版。

    这就是如何在Excel中实现无重复的随机数字。 感谢你的阅读,希望下周能在我们的博客上见到你!

    供下载的实践工作手册

    在Excel(.xlsx文件)中生成唯一的随机数

    Michael Brown is a dedicated technology enthusiast with a passion for simplifying complex processes using software tools. With more than a decade of experience in the tech industry, he has honed his skills in Microsoft Excel and Outlook, as well as Google Sheets and Docs. Michael's blog is dedicated to sharing his knowledge and expertise with others, providing easy-to-follow tips and tutorials for improving productivity and efficiency. Whether you're a seasoned professional or a beginner, Michael's blog offers valuable insights and practical advice for getting the most out of these essential software tools.