如何在Notion中获取随机数
我们都知道,随机是游戏的精髓。那么,你想要在Notion中获取一个随机数吗?截至目前,Notion公式中似乎并没有提供一种简单的方式来创建随机数。但我们可以通过一些变通的方法向Notion工作区引入随机数,并为Notion创建一个类似洗牌的效果。

现在,让我们深入了解并看看如何实现。
1. Notion中的随机数是什么?
在Notion工作区中,随机数是创建特定功能的重要组成部分。它们对于洗牌功能、唯一标识符(GUID)或使Notion一次仅显示一个数据库条目都是必要的。
大多数编程语言(如Python的random),都有一个简单的命令,可以使程序返回给定范围的随机数。然而目前在Notion中并没有单一的公式命令来获取随机数。
2. Notion中随机数有什么用?
在Notion中使用随机数的主要目的是对大量数据库条目进行洗牌或一次只显示单个条目。
洗牌功能非常适用于需要惊喜的场合。比如可以用在Notion中的餐饮计划器中随机推荐食谱,或在画廊中显示随机选择的图像,比如做一个塔罗牌的游戏,每日励志语录等😄。另外,如果你希望在Notion中仅显示单个数据库项目,也可以使用随机数。
3. 如何在Notion中获取随机数
在Notion中,你可以通过一些公式结合多个其他数字来获得足够随机的数字。所有这些公式都旨在返回相当大的数字。我们可以用它支持Notion中的洗牌功能,而选择哪个公式将取决于你的具体使用场景。
3.1. 随机动态数字
要获取具有一个属性的随机动态数字,可以使用以下公式:
1 | (((((toNumber(substring(replaceAll(id(), "[a-z]", ""), 0, 8)) * 100011979) + 500067713) % 900066731) * (((timestamp(now()) * 800067089) + 800068411) % 800053967)) + 900067309) % 900066571 |
该数字是动态的,这意味着每次重新加载页面时都会更改。
刷新前:

刷新后:

或者如果希望随机数平时不变,只有在每次编辑后才会改变,可以通过引入Last edited time操作:
1 | (((((timestamp(prop("Last edited time")) * 100011979) + 500067713) % 900066731) * (((toNumber(substring(replaceAll(id(), "[a-z]", ""), 0, 8)) * 800067089) + 800068411) % 800053967)) + 900067309) % 900066571 |
3.2. Notion中的随机静态数字
要获取随机静态数字,您将需要在您的数据库中拥有两个属性。一个是Created time属性,另一个是带有以下公式的公式属性:
1 | (((((timestamp(prop("Created time")) * 100011979) + 500067713) % 900066731) * (((toNumber(substring(replaceAll(id(), "[a-z]", ""), 0, 8)) * 800067089) + 800068411) % 800053967)) + 900067309) % 900066571 |
该数字是静态的,这意味着它永远不会改变。
如果希望生成范围内{min, max}的随机静态数字,可以使用:
1 | timestamp(prop("Created time")) * 100011979 + 500067713, 900066731) * mod(toNumber(slice(replaceAll(id(), "[a-z]", ""), 0, 8)) * 800067089 + 800068411, 800053967) + 900067309, 900066571) % {max-min+1} + {min} |
或者可以试着直接对Created time的timestamp取模😄:
1 | round(timestamp(prop("Created time")) / 60000) % {max-min+1} + {min} |
使用时需要把{}内的公式替换成自己使用的参数的计算结果。
3.3. Notion中的随机时间戳
可以结合上面两个数字来在Notion中创建一个随机时间戳。在Notion中,时间戳是所谓的Unix时间戳。这是一个相当大的数字,表示自1970年1月1日UTC以来经过的总秒数。
我们需要在数据库中拥有两个名为随机动态数和随机静态数这两个属性,这两个属性使用上面用到的公式:
1 | toNumber(substring(format(prop("随机动态数")* prop("随机静态数")), 0, 13)) |
3.4. 如何在Notion中获取每日随机数
使用上述方法将在每毫秒返回一个新的随机数,因为时间戳会不断更新。这意味着每次刷新Notion页面时都会获得一个新数字。但是在某些情况下,我们可能希望有一个更慢的更新速度。例如,如果你计划在Notion中构建每日励志语录,那么数字应该每天仅更改一次。我们可以这么做:
1 | mod(mod(timestamp(prop("Created time")) * 100011979 + 500067713, 900066731) * mod(round(timestamp(now()) / (1000*60*60*24)) * 800067089 + 800068411, 800053967) + 900067309, 900066571) |

3.5. 如何使用Notion按钮获取随机数
Notion按钮允许您生成一个随机数,以便您可以动态刷新选择。为此,您可以调整Notion中的随机动态数字公式,如下所示:
(((((toNumber(substring(replaceAll(id(), “[a-z]”, “”), 0, 8)) * 100011979) + 500067713) % 900066731) * (((timestamp(now) * 800067089) + 800068411) % 800053967)) + 900067309) % 900066571
如果你还不会使用按钮,请参考我的关于Notion Button的文章。





