我需要創建一個隨機-1或1來乘以一個已經存在的數字。問題是我目前的隨機函數產生-1,0或1.這樣做的最有效方法是什麼?JavaScript隨機正數或負數
35
A
回答
92
不要使用您現有的功能 - 只需撥打Math.random()
即可。如果< 0.5,那麼-1,否則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
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. 隨機生成1或-1(正整數或負整數)
- 2. 如何生成隨機正數或負數小數?
- 3. 隨機和負數
- 4. C#中的隨機替換正數和負數數組#
- 5. 在Jmeter中設置隨機函數的隨機負數?
- 6. 檢查正數或負數
- 7. Javascript隨機數組
- 8. 隨時刮(PHP)輸出是正數或負數,顏色相應
- 9. 如何隨機使用負數.randrange
- 10. 的Java隨機給予負數
- 11. 數連續正數或負數值
- 12. 在matlab中生成隨機負向正浮點數
- 13. Javascript數組隨機填充
- 14. Javascript的隨機數字?
- 15. 如何獲得可以爲正值或負值的隨機值?
- 16. 真正的隨機數
- 17. 正確生成隨機數
- 18. asp.net負載隨機
- 19. Javascript:將正數改爲負數?
- 20. 正數//負數
- 21. JavaScript中的隨機數和數組
- 22. JavaScript數組交叉隨機數?
- 23. Python算法從正數據集中獲取隨機化的負數據集
- 24. 能否使用負數作爲隨機數生成的種子?
- 25. 正數到負數
- 26. tx沒有正確的隨機數。帳戶具有隨機數:5 tx具有隨機數:15
- 27. iMacro爲twitter生成隨機文本或隨機數
- 28. 負重隨機選擇
- 29. 如何排序正或負整數
- 30. 前置前正或負的單位數
完美的作品,有趣,我不能在網上任何地方找到答案。 – 2011-12-23 03:34:31
不錯的優雅的解決方案,謝謝 – 2015-01-28 22:32:29