如何强制 =RAND() 在 LibreOffice Calc 中仅运行一次?

如何强制 =RAND() 在 LibreOffice Calc 中仅运行一次?

我正在尝试随机化 LibreOffice Calc 中的单词列表。 A 列包含数字 1 到 15,表示单词的初始顺序。 B 列包含单词本身。这是原始数据集(A1-B16):

No. Words
1   alike
2   bear
3   cane
4   dark
5   easy
6   fill
7   grass
8   hike
9   iron
10  joke
11  kilo
12  long
13  moan
14  nose
15  ouch

然后我写入=RAND()C2-C16,它生成一个 0 到 1 之间的随机数,用于对列表进行洗牌。

No. Words   RNG
1   alike   0.865621083224796
2   bear    0.931833626420918
3   cane    0.227839223621858
4   dark    0.832537867713207
5   easy    0.969775037455717
6   fill    0.896303834396809
7   grass   0.432228403811195
8   hike    0.075830198639415
9   iron    0.867408144812027
10  joke    0.603695010104631
11  kilo    0.410994968775223
12  long    0.840853885814879
13  moan    0.919710215557461
14  nose    0.181802316389395
15  ouch    0.016758784630857

然后我选择A1-C16并使用RNG作为键按升序排序。这是结果:

No. Words   RNG
15  ouch    0.766843532872873
8   hike    0.947070486803519
14  nose    0.935710387458581
3   cane    0.907095084669842
11  kilo    0.998591593185233
7   grass   0.262657114008517
10  joke    0.508633980155267
4   dark    0.686797433391668
12  long    0.124417578504844
1   alike   0.316587339544393
9   iron    0.780943260363561
6   fill    0.020870056655958
13  moan    0.421603151053937
2   bear    0.017301889523655
5   easy    0.904484088935699

请注意,排序时重新计算了 C 列,但排序是根据旧值进行的。因此,当第三方查看时,列表似乎没有正确排序。我很快发现,每次我执行任何操作(例如更改字体、字体大小、颜色、复制、粘贴等)时,它们都会重新生成。

这意味着我不能简单地将 C 列复制到 D 列。原始值会丢失,并且 C 列和 D 列都会获得新值。

No. Words   RNG 
15  ouch    0.53812335792605    0.043562592479011
8   hike    0.398881655918106   0.64370811632297
14  nose    0.201867181513088   0.755510523771107
3   cane    0.394920269465235   0.28416412724015
11  kilo    0.152969079524211   0.799996173130015
7   grass   0.902568202601681   0.663629657403564
10  joke    0.435628762542454   0.334338520877465
4   dark    0.096763206996108   0.886593020939989
12  long    0.385578268172482   0.379263717906069
1   alike   0.678912726335666   0.74399580956146
9   iron    0.838382502021304   0.609345470240727
6   fill    0.025112459308232   0.365339519963588
13  moan    0.321684809269134   0.92230175892848
2   bear    0.013301554887914   0.274360792567395
5   easy    0.308874453562179   0.640593438289194

我可以在单独的列上手动输入值,但我无法再证明它们实际上是由 RAND() 生成的。如果我单击手动复制的单元格,则表达式就是数字本身,而不再是=RAND()。如何创建表达式或修改 RAND 的行为,以便 RAND 的值一旦生成就固定?

答案1

来自RAND()libreoffice calc 的文档:

RAND是一个易失性函数,每次 Calc 重新计算时都会生成一个新的随机数。这意味着RAND当通过选择数据 ▸ 计算 ▸ 重新计算或按 F9 或任何输入事件更新任何单元格时,Calc 将更新返回的值。

使用该RAND.NV函数作为非易失性等效函数。

因此,请改用该函数。

相关内容