[解決済み] Math.random()を呼び出す関数は純粋か?
2022-05-17 22:41:08
質問
以下のものは純粋関数でしょうか?
function test(min,max) {
return Math.random() * (max - min) + min;
}
私の理解では、純粋な関数はこれらの条件に従うと思います。
- パラメータから計算された値を返す
- 戻り値を計算する以外の仕事はしない
この定義が正しいのであれば、私の関数は純粋関数なのでしょうか?それとも、純粋な関数を定義するものに対する私の理解が正しくないのでしょうか?
どのように解決するのですか?
いいえ、そうではありません。同じ入力を与えても、この関数は異なる値を返します。そして、入力と出力を対応させる「表」を作ることができません。
のWikipedia記事より 純粋関数 :
この関数は、同じ引数値が与えられると常に同じ結果値を評価します。 を評価します。関数の結果値は、プログラムの実行中に変化する可能性のある プログラムの実行中に変化する可能性のある隠された情報や状態に依存することはできません。 また、I/Oデバイスからの外部入力に依存することはできません。 また、I/Oデバイスからの外部入力に依存することもできません。
また、もうひとつ、純粋な関数は、以下の説明のように、入力と出力の対応を表すテーブルに置き換えることができます。 このスレッド .
この関数を書き換えて純粋な関数にしたい場合は、ランダムな値も引数として渡す必要があります
function test(random, min, max) {
return random * (max - min) + min;
}
というように呼び出します(例:2と5をminとmaxとした場合)。
test( Math.random(), 2, 5)
関連
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み] JavaScriptでNULL、未定義、空白の変数をチェックする標準的な関数はありますか?
-
[解決済み] メソッドと関数の違いは何ですか?
-
[解決済み] Bash関数にパラメータを渡す
-
[解決済み] JavaScriptで文書全体の高さを取得するには?
-
[解決済み】JavaScriptの関数にデフォルトのパラメータ値を設定する
-
[解決済み】関数の前のエクスクラメーションマークは何をするのですか?
-
[解決済み] Typescript流のMongoose...?
-
[解決済み] JavaScriptでクエリ文字列が存在するかどうかを確認するには?
-
[解決済み] AngularJS - $http.postがJSONの代わりにリクエストパラメータを送信する方法はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Javascriptで乱数発生器の種を蒔く
-
[解決済み] 上級者向けJavaScript。この関数はなぜ括弧でくくられるのですか?重複
-
[解決済み] なぜJavaScriptでは!{}[true]がtrueに評価されるのですか?
-
[解決済み] SVG のテキスト要素の幅を取得する
-
[解決済み] truthy や falsy を明示的なブール値、すなわち True や False に変換する。
-
[解決済み] 料金制限のあるAPIを独自にDogfoodする
-
[解決済み] Bootstrap モーダル:トグル時に背景がトップにジャンプする
-
[解決済み] Angularで、配列内のオブジェクトを検索したい。
-
[解決済み] jqueryで部分文字列を作成する方法
-
[解決済み] Chrome、Javascript、window.open in new tabについて