使用公式生成不重复的随机数

use*_*222 2 random excel excel-formula

我想生成0到20之间的4个随机数,它们之间不重复.即,对于每个后续生成的随机数,它必须排除任何先前生成的随机数的值.

例如

第二个生成的随机数不能等于第一个,第三个不能等于第一个和第二个,最后第四个不能等于第一个,第二个和第三个.

如何使用Excel公式实现?

Sco*_*ner 6

把它放在A2中:

=AGGREGATE(15,6,(ROW($1:$21)-1)/(COUNTIF($A$1:A1,(ROW($1:$21)-1))=0),RANDBETWEEN(1,22-ROW(1:1)))
Run Code Online (Sandbox Code Playgroud)

并复制四个单元格.

在此输入图像描述

  • @jeranon Aggregate允许使用数组.`ROW($ 1:$ 20)`创建一个从1到20的数字数组.`/(COUNTIF($ A $ 1:A1,ROW($ 1:$ 20))= 0)`是导致唯一性的原因.如果它已经存在那么它将导致一个'#DIV/0`错误,AGGREGATE被告知忽略,第二个标准是'6`.因此,每次向下复制时,都会创建一个尚未使用的越来越小的数字数组.然后RANDBETWEEN()是`k`,告诉AGGREGATE返回哪个.我们需要每次减少一个范围,因为数组每行减少一个. (3认同)
  • @jeranon你是对的.至于要学习,我没有建议,我只是通过做而学习. (2认同)