本文へ移動

Tane種

シードで同じ数列を再現し、項目を並べ替えたり選んだり、日替わりの問題を共有したり、保存した位置から再開したりできます。

「種」は英語の seed に当たる日本語です。 名前について(英語)

目次

解説

シードの正規化と予約範囲

シードを正規化し、数列のシードと配布用のシードを区別し、範囲を予約します。

数列と配布用のシードは異なる

mulberry32は整数を符号なし32ビットとして読みます。seedFromは42のような数値の文字列をその数値にし、それ以外をハッシュします。hashSeed("42")は別の処理です。isSeedは外から配布する正のシードを1〜most、既定では2³¹−1で確認します。そのため、数列のシード0は使えてもisSeed(0)はfalseです。

import { drawSeed, hashSeed, isSeed, mulberry32, seedFrom } from "@johnmorrisdotca/tane";

console.log(seedFrom("42"), hashSeed("42"));
console.log(isSeed(0), mulberry32(0)());
console.log(drawSeed(mulberry32(42), { most: 100, reserved: [{ from: 10, size: 5 }] }));
42 686566589
false 0.26642920868471265
63

予約を避けて配布する

SeedBlockはfromからsize個のシードです。checkBlocksは整数、重なり、上限を確認して並べます。drawSeedは予約を避け、すべて予約された範囲は拒否します。

日付のブロック

日付用には、基準日からの日数ではなくYYYYMMDDの十進数の位置を使います。その数が入る長さを取り、ランダムな配布から予約できます。日替わりに逆変換とタイムゾーンの例があります。

ソースを見るGitHub で編集@johnmorrisdotca/tane 1.3.0 のソースから作成しました。

この日本語は、まだ日本語を母語とする方の確認を受けていません。訂正を歓迎します。