テキストシャッフル
テキスト処理はすべてブラウザ内で完結します。データは送信されません
テキストの順序をランダムに並べ替えます。3 つの単位はそれぞれ残すべきものを残します。行は行の順序だけを変え(行数も中身もそのまま)、文字は各行の中で並べ替え(行構造は保たれ、改行が勝手に動く文字として扱われることはありません)、語は語順だけを変え、語間のすき間と行頭行末の空白はその場に残ります。 シャッフルは Fisher–Yates です。 よくある「ランダムに数回交換する」実装は偏った分布になり、特定の順序が明らかに出やすくなります。これは抽選やサンプリング、ランダムなグループ分けでは実際に問題になります。後ろから走査する Fisher–Yates なら、すべての順列が等しい確率になります。 リアルタイムではありません。 リアルタイムだと 1 キーごとに再計算され、良い順序を見つけた直後に次のキーで入れ替わってしまいます。そのため明示的なボタンにしています。
機能
- 行・文字・語の 3 単位
- Fisher–Yates によるシャッフルで、すべての順列が等確率
- 語モードは行頭行末の空白と語間のすき間を保つ
- 文字モードは行構造を保ち、絵文字や ZWJ 連結は書記素クラスタごと動く
- ボタンを押したときだけ並べ替え、押すまでは結果が変わらない
- 空行も普通の行として扱われる
- 処理はすべてブラウザ内で完結し、内容は送信されません
使い方
- 並べ替えたいテキストを貼り付けます
- 単位を選びます
- 「もう一度シャッフル」で引き直し、納得したら「コピー」
よくある質問
- シャッフルしても変わって見えないことがあるのはなぜですか?
- ランダムな並べ替えでは元の順序が出ることもあるからです。2 行なら 50%、3 行でも約 17% の確率で元のままになります。本当に動いているか確かめたいときは数回押すか、行数の多いテキストで試してください(10 行なら毎回同じになることはまずありません)。「前回と必ず違う結果にする」処理は入れていません —— 入れると分布が均等でなくなるからです。
- 入力しながらシャッフルできないのはなぜですか?
- シャッフルは入力から計算で導けない操作だからです。リアルタイムだと 1 文字入力するたびに結果が変わり、気に入った順序を見つけてもコピーする前に消えてしまいます。そのため明示的なボタンにしています —— UUID 生成やパスワード生成と同じ理由です。
- 偏りはありませんか?
- ありません。後ろから走査する Fisher–Yates を使っており、n! 通りの順列がそれぞれ 1/n! の確率で出ます。よくある「配列を 1 周しながらランダムな位置と交換する」実装には測定できる偏りがあり、抽選やサンプリング、グループ分けでは実際に影響が出ます。
関連ツール
テキスト逆順
テキストテキストを行内・全体・行順・語順で逆順にします。絵文字や結合文字は壊れません。処理はすべてブラウザ内で完結します。
テキスト整形
テキストログや表からコピーした1列を整形します。重複行の削除、並べ替え、空行・前後の空白・行番号の削除、空白のまとめを個別に切り替えできます。
ランダム漢字
生成漢字のランダム文字列を生成します。常用漢字(約 850 字)と CJK 基本区の 2 万コードポイント超の 2 種類。字数と改行の指定もできます。
テキスト差分
テキスト2つのテキストを行ごとに比較し、追加・削除・未変更の行をハイライト表示します。変更は最小差分で整列し、すべてブラウザ内で処理します。
文字数カウント
テキスト英語は単語数、日本語や中国語は字数で別々に数えます。文字数・行数・バイト数・読了時間も同時に出し、すべてブラウザ内で処理するので送信しません。
命名規則の変換
テキスト14 の命名規則の間で識別子を変換します。fooBarBaz や FOO_BAR のような混在も語に分解し、連続する大文字も語ごとに切ります。