小数乱数ジェネレーター
下限0、上限1、シード42なら、結果は必ず0.2523451748です。同じ範囲、同じシード、同じ桁数なら同じ値が再現されるので、解答例や確率の演習、サンプルデータに使えます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 最小値
- 0
- 最大値
- 1
- シード値
- 42
- 値
- 0.2523451748
- 精度
- 10
- 単位区間
- 0.2523451748
小数乱数ジェネレーターは、数値区間の内側に実数の標本が一つ必要なときに開く道具です。模擬温度、試験用の単価、単位区間での教室抽選、継続的インテグレーションの実行ごとにバイト単位で変わってはならないテスト用フィクスチャなどが典型です。本能力は必須の下限と必須の上限のあいだに、一様な小数を一つ返します。抽選はシード付き線形合同法から来るため、同じ境界・同じシード・同じ精度は常に同じ数を生みます。流れは公開された Numerical Recipes の漸化式を二の三十二乗で割ったものです。
シード付き線形合同法が一つの小数になるしくみ
再生できない小数乱数ジェネレーターは、テスト・宿題の解答・シミュレーションノートにとって負債です。定数が Numerical Recipes の組 1664525 と 1013904223 である 32 ビット線形合同法を、二の三十二乗を法として進めます。受け取ったシードは符号なし 32 ビット語へ落とされます。
有限整数はその法で剰余を取り、非数値の文字列は FNV-1a ハッシュで混ぜるため、フィクスチャ名のような実験室ラベルでも安定したシードになります。漸化式の一段が符号なし整数 X を生み、それを二の三十二乗で割ると、ゼロを含み一を含まない半開区間の単位区間標本 u が得られます。丸めの前の生の小数は、したがって最小を含み最大を含まない半開区間にあります。
再生できる小数抽選が役立つ場面
第一の利用者はソフトウェアテストです。0.15 から 0.85 のあいだの小数が必要なスイートは、ホスト乱数を呼んで動く数を固定するのではなく、固定シードを送り公開値を断言すべきです。第二は教育基盤です。 確率の授業は区間上の一様小数を抽き、平均や被覆を求めさせます。
シード付き生成器なら、どの電卓が点滅したかを議論する代わりに、教員は期待抽選をワークシートの横に掲載できます。第三はシミュレーションと模擬データです。不正入力は残高を消費しません。
本ツールは暗号乱数源でも、複数標本のベクトル生成器でも、本格的なモンテカルロライブラリの代替でもありません。独立した抽選がたくさん必要なときは、シードを自分で進め(seed に一、seed に二)、値を集めるか、別の文書化されたシードで再度呼び出してください。
活用例
再生可能なテスト用フィクスチャ
継続的インテグレーションでシードと境界を固定し、単体テストがホスト乱数の動くスナップショットではなく常に同じ小数を期待するようにします。
教室の一様抽選
確率のワークシートの横に期待小数を掲載し、受講者と解答キーが一つのシード付き抽選を共有するようにします。
模擬センサと価格系列
シナリオ識別子をシードへ写し、文書化された数値区間の内側で安定した温度・重量・単価を得ます。
よくある質問
これは暗号乱数源ですか?
いいえ。 生成器はテスト・教育・模擬データ向けの、短く完全に仕様化された線形合同列です。鍵やトークン、敵対者に対して予測不能でなければならないものには使わないでください。
小数点以下は何桁まで指定できますか?
0桁から12桁まで指定でき、指定しなければ10桁になります。丸めは最後に行われ、2つの境界の間に値を決めたあとで桁数をそろえます。
上限の値そのものが出ることはありますか?
丸める前の値では出ません。結果が下限と等しくなることはありますが、常に上限より小さくなります。下限を含み上限を含まない区間から取り出すためです。
異なる乱数をいくつも作るにはどうしますか?
取り出すたびにシードを変えます。たとえば1ずつ足していくか、記録しておいた別のシードを使ってください。1つのシードからは1つの数しか出ないので、同じシードでは同じ小数になります。
下限が上限より小さくなければならないのはなぜですか?
等しい境界や逆向きの境界では区間の幅がなく、一様な取り出しを定義できないためです。値を勝手に入れ替えず、入力の誤りとしてお知らせします。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/stat/decimal-random-number-generator \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"minimum":0,"maximum":1,"seed":42}'const res = await fetch("https://api.kit.forhosting.com/stat/decimal-random-number-generator", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"minimum": 0,
"maximum": 1,
"seed": 42
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/stat/decimal-random-number-generator",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"minimum": 0,
"maximum": 1,
"seed": 42
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/stat/decimal-random-number-generator", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"minimum":0,"maximum":1,"seed":42}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"minimum":0,"maximum":1,"seed":42}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/stat/decimal-random-number-generator", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"minimum": 0,
"maximum": 1,
"seed": 42
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "stat.decimal_random_number_generator",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
下限が上限より真に小さくない場合、順序を捏造せず invalid_input で失敗します。
シード付き線形合同法が一つの小数になるしくみ
そのため本エンドポイントはホストの乱数源とシステム時計を拒みます。その単位標本を、値は minimum に u かける(maximum 引く minimum)の幅を足すアフィン写像で呼び出し側の区間へ写します。同じシード・同じ境界・同じ精度は、32 ビットの乗算加算を同じように実装する実行系なら常に同じ unit_interval と同じ value を返します。それが継続的インテグレーションの断言が求める契約そのものです。経路にオペレーティングシステム水準の確率性はなく、同じ JSON 本体を与えられた二つのワーカーは食い違えません。
入力契約、境界、精度、誤りのふるまい
省略時は十で、ゼロから十二までの整数でなければなりません。等しい境界も逆転した区間も拒否します。幅がゼロまたは負では一様抽選を定義できず、入れ替えを捏造すると呼び出し側の不具合を隠すからです。スケール後の丸めは端点ちょうどに落ちることがあります。表示値は要求桁数の小数として扱い、排他的な上限があらゆる丸めを生き延びる約束とは見なさないでください。検証失敗は課金されません。後の再生が同じ流れを使ったことを示す必要があるときは、エコーされたシードを自身の記録と突き合わせてください。必須フィールド三つを含む JSON 本体を POST してください。minimum は区間の下限で、min、lower、lo としても届きます。maximum は上限で、max、upper、hi としても届きます。seed は生成器のシードで、key または salt としても届きます。任意の precision は decimals、places、digits としても受け付け、返す小数の小数桁数を決めます。数値フィールドは JSON の数でも数値文字列でもよく、非有限値・空文字・必須フィールド欠落はフィールド名を添えた invalid_input で失敗します。幾何学上の硬い規則は、minimum が maximum より真に小さいことです。成功時、本体は解析した minimum と maximum、実際に漸化式へ入った符号なし 32 ビットシード、適用した精度をエコーします。検査用に十二桁へ丸めた生の u である unit_interval、要求精度へ丸めたスケール済み小数 value、アフィン写像を言い直す短い formula 文字列も返します。成功した呼び出しは公開の基本料金 $0.002 を使います。
再生できる小数抽選が役立つ場面
実装は純粋な parse のティア A のため、無料のブラウザ経路と有料 API は一つの同型モジュールを共有し、ずれません。成功した API 呼び出しはそれぞれ $0.002 です。リクエストごとに小数を一つ返します。リクエストは小さく保ち、丸めた値をテストに固定すれば、統計ランタイムを自前で立てずに再生可能な小数が得られます。
技術的な質問
この小数乱数ジェネレーターは値をどう選びますか。
シードから Numerical Recipes の 32 ビット線形合同法を進め、次状態を単位区間標本 u ∈ [0, 1) へ写し、minimum + u × (maximum − minimum) を要求精度へ丸めて返します。
下限はなぜ上限より小さくなければなりませんか。
一様抽選には正の区間幅が必要です。minimum が maximum より真に小さくない場合、境界を入れ替えたり向きを捏造したりせず invalid_input で失敗します。
同じシードは常に同じ小数を生みますか。
はい。経路は時計を読まず Math.random も呼びません。同じ minimum・maximum・seed・precision は常に同じ unit_interval と同じ value を返します。
小数乱数ジェネレーターの料金はいくらですか。
ブラウザツールは無料です。API リクエストは成功呼び出しあたり $0.002 の前払い KIT 残高を使います。不正入力は課金されません。