js-motion-rng
v1.0.1
Published
Hash device motion data with chaos-based preprocessing
Downloads
188
Readme
js-motion-rng
[!NOTE] 思いつきをCodexで具現化したやつです。実用性については知りません。
[!WARNING] 使用しているAPIの都合上、一部デバイス・ブラウザ環境では動作しないことがあります。
ブラウザのDeviceMotionEventを使用した乱数生成ライブラリです。
普通の乱数で満足しない時に使ってください。
機能
DeviceMotionEventからモーションデータを抽出- 数値フィールドにロジスティック写像ベースのカオス変換を適用
- すべての値を SHA-256 でハッシュ化
nullは固定トークン由来の安定ハッシュへ変換- 抽出した全ハッシュを統合し、単一の乱数(
BigInt)を生成
インストール
npm install js-motion-rng使い方
import { processMotionEventWithRandom } from "js-motion-rng";
window.addEventListener("devicemotion", async (event) => {
const { randomNumber, randomNumberNormalized, hashedData } = await processMotionEventWithRandom(event);
console.log(randomNumber.toString()); // BigInt
console.log(randomNumberNormalized); // [0, 1) の number
console.log(hashedData); // ハッシュ化済みデータ
});API
processMotionEvent(event)
DeviceMotionEvent を入力として、以下を含むハッシュ化済みオブジェクトを返します。
timestampintervalaccelerationaccelerationIncludingGravityrotationRate
返却される各値は SHA-256 ハッシュ文字列です。
generateMotionRandomNumber(event)
モーションデータから生成した全ハッシュ(タイムスタンプ由来ハッシュを含む)を統合し、
単一の BigInt 乱数を返します。
generateMotionRandomNumberNormalized(event)
generateMotionRandomNumber の結果から導出した、[0, 1) 範囲の number を返します。
processMotionEventWithRandom(event)
1回の呼び出しで以下を返します。
hashedDatarandomNumber(BigInt)randomNumberNormalized(number,[0, 1))
テスト
npm testブラウザ実行例
npm run example:serveexamples/browser/index.html をローカルサーバー経由で開き、
デバイスモーションの権限を許可して動作を確認してください。
