乱数-1または1を作成して、既存の数をで乗算する必要があります。問題は私の現在のランダム関数が-1、0、または1を生成することです。これを行う最も効率的な方法は何ですか?JavaScriptランダムポジティブまたはネガティブ番号
35
A
答えて
92
既存の機能を使用しないでください。Math.random()
に電話するだけです。 、-1を0.5 <もしそうでない1:
var plusOrMinus = Math.random() < 0.5 ? -1 : 1;
9
ちょうどそれの楽しみのために:
var plusOrMinus = [-1,1][Math.random()*2|0];
または
var plusOrMinus = Math.random()*2|0 || -1;
しかし、あなたは、保守になると思うものを使用します。
35
それだけでソートの理にかなっているように私はいつも
Math.round(Math.random()) * 2 - 1
のファンしてきました。
Math.round(Math.random())
はあなたに0または2を与える2を乗じそして1を引いあなたに0または1
を与えることは、あなたに与え-1または1
直感的!
3
これまでの回答が示すように、実際にはさまざまな方法があります。
恐らくMath.round(の最速という組み合わせ)とMath.random:
// random_sign = -1 + 2 x (0 or 1);
random_sign = -1 + Math.round(Math.random()) * 2;
あなたはまた、Math.cos()(which is also fast)を使用することができます。
// cos(0) = 1
// cos(PI) = -1
// random_sign = cos(PI x (0 or 1));
random_sign = Math.cos(Math.PI * Math.round(Math.random()));
3
は、なぜあなたはしてみてくださいいけません:
(Math.random() - 0.5) * 2
50%の確率で負の値になり、さらにランダムな数値生成されたバー。
た場合、または
は本当に-1/1必要があります。Math.ceil((Math.random() - 0.5) * 2) < 1 ? -1 : 1;
関連する問題
- 1. ネガティブ番号入力用のNativeScriptキーボード
- 2. オラクルのinsert文の値を受け取ります(ネガティブ番号)
- 3. "IF"コマンドでバッチファイルのネガティブ番号を検出できない
- 4. データベース番号の自動番号付けまたはカスタム番号
- 5. Javascript hex_md5ピン番号
- 6. JavaScriptのインクリメント番号
- 7. フォーマット番号json javascript
- 8. JavaScript番号()関数
- 9. ライン番号またはワード番号のないリンクの作成
- 10. Javascriptでユーザーの電話番号またはIP番号を取得するには
- 11. GoogleマップJavascript APIカスタムマーカー番号
- 12. javascriptの番号とオブジェクト
- 13. JavaScriptの書式番号
- 14. Javascriptがregex-電話番号
- 15. JavaScriptのdocument.domainを、ポート番号
- 16. Javascriptの全体番号
- 17. ダイヤモンド番号形状のJavascript
- 18. Javascriptの検索番号
- 19. 番号または2番目に大きな番号を見つける
- 20. ブラウザの識別番号はjavascript
- 21. はJavaScriptで番号でコンマを置く
- 22. javascriptの入力番号の更新番号
- 23. 10桁または11桁の電話番号のJavaScriptフォーマットと1800の電話番号の認識
- 24. LuhnまたはVerhoeffアルゴリズムのクレジットカード番号
- 25. テレビガイドアプリの電話番号またはネイティブ
- 26. 番号または文字列LUA
- 27. 間違った番号は
- 28. @(YES)vs [NS番号番号WithBool:はい]
- 29. laravelデータテーブルに行番号またはシリアル番号を追加する方法
- 30. angle2データテーブルに行番号またはシリアル番号を追加する方法
作品完璧に、面白い私はどこでもオンライン答えを見つけることができませんでした。 –
良い洗練されたソリューション、ありがとうございました –