Rok*_*jan 18 javascript random math jquery
我需要Math.random()的一些帮助:
我必须旋转一些图像(使用CSS3 transform(deg))
以获得结果-40,+40
但跳过范围:-20和+20的结果

如果我没有错,这将在-40到+40的范围内得到随机结果
var counter = Math.round(Math.random()*81)-40;
Run Code Online (Sandbox Code Playgroud)
如何排除-20和+20之间的结果数字???
Joe*_*Joe 13
随机-1或1次0-20随机加20,可以工作
(Math.random()<.5?-1:1)*Math.floor(Math.random()*20 + 21);
Run Code Online (Sandbox Code Playgroud)
1300次运行的样本结果(仅显示为简单的正面):
Number_21: 70
Number_22: 62
Number_23: 56
Number_24: 57
Number_25: 79
Number_26: 57
Number_27: 64
Number_28: 60
Number_29: 57
Number_30: 67
Number_31: 63
Number_32: 81
Number_33: 81
Number_34: 65
Number_35: 59
Number_36: 59
Number_37: 62
Number_38: 71
Number_39: 52
Number_40: 78
Run Code Online (Sandbox Code Playgroud)
Ale*_*pin 10
生成20到40之间的随机数,然后随机否定它.
var counter = (Math.round(Math.random() * 20) + 20) * (Math.random() < 0.5 ? 1 : -1);
Run Code Online (Sandbox Code Playgroud)
修改现有答案以给出均匀分布范围-40到-21和21到40:
(Math.random()<.5?-1:1)*(Math.floor(Math.random()*20) + 21)
Run Code Online (Sandbox Code Playgroud)
没有分支,只有一个单一的 random()呼叫,使用模运算符的法宝:
//Return a result between -40 and +40, excluding the range -20 to +20
var zeroToThirtyNine = Math.floor(Math.random()*40)
var counter = ((zeroToThirtyNine+61)%81)-40
Run Code Online (Sandbox Code Playgroud)
zeroToThirtyNine | counter
---------------------------
0 | 21
1 | 22
2 | 23
...
18 | 39
19 | 40
20 | -40
21 | -39
...
37 | -23
38 | -22
39 | -21
生成-20到+20之间的数字,如果是负数,则减去另外20度.如果是积极的,加20度.
此外,你可能想要地板而不是圆形,所以你不会得到41度.
var counter = Math.floor(Math.random()*81)-40;
Run Code Online (Sandbox Code Playgroud)