公開:
2025/11/24
Notionでリストをランダムにソートする。
Formulaプロパティを追加して、
Edit property > Edit formulaで以下のような感じのを追加すれば良い。
/* notion formula */
lets(
/* 分単位のシード値 (10^8 % 10^6) */
/* notionのtimestampは分未満が死んでる */
MinuteStep, floor(timestamp(now()) / 60000) % 1000003,
/* ページIDを数値化(末尾8文字=32bit) */
/* Based on: https://note.com/necoko168/n/nb3240db18430 */
PageSeed, ("0x" + id().substring(24)).toNumber(),
/* 線形合同法 (10^(5+7) % 10^9) */
TimeShuffler, (MinuteStep * 15485863 + 37) % 2038074743,
/* 作成 (((10^9 + 10^8) * 10^4) % 10^5) */
((PageSeed + TimeShuffler) * 48611) % 100000
)
コメントにあるように、こちらの記事を参照した。この方の他の記事も詳しいので、いくつか読んでおいたらすんなり書けた。乱数の作り方はAIに質問したけど。
久しぶりにNotionいじっていて、なんかランダムにソートする新たな方法でてないかな〜と"Notion random"で検索したら、https://note.com/necoko168/n/n7264399f1e19のページがトップに来て、こんなのあるなら実装余裕じゃんwとか言っていたら、timestampが分単位でしか取れなかったり、lnとかeはあるのにsinは無かったりして、手間取った。上ので数千件までは対応できるはず。
数年前よく使っていたデータベースが大きめなので、そこで試してみるとこんな感じ。

ちゃんとランダムになっていれば、3500件くらいあるのかな。
と思ったら2988件だった。結構ズレてる。まぁ良いか。学がないのでこれが十分ランダムなのかよくわかっていない。(TimeShufflerの下の方がランダムなら良いはずなので、ぱっと見のランダムっぽさはある。最後48611かけてるしこんなに桁要らなそう。むしろ最終的な桁はもうちょっとあっても良い気がするし、増やしても大丈夫な設計になっている気がする。最近Notionあまり使っていないので全く問題にならないが。)