Run through an array
Clojure, 41 37 bytes
(fn[a k](map #(+(*(rand-int 2)k)%)a))
Knocked off a couple of bytes by multiplying by 0 or 1 and dropping the "if". Credit to most all of the other submitters!
Jelly, 9 8 7 bytes
From 8
to 7
thanks to @FryAmTheEggman.
+2X’¤¡€
Try it online!
Explanation
+2X’¤¡€
€ Map over each argument...
2X Choose a random number from {1,2}
’ Minus 1
¤ (grammar stuff)
¡ Repeat that number of times...
+ Add the second input (to the argument being mapped over).
Pyth, 7
m+*O2vz
Try it here
Uses a random choice instead of floating point comparison, but should be indistinguishable.
Expansion:
m+*O2vz ## implicitly, a d and Q are added to the end of the program
m+*O2vzdQ ## Q = eval(input()), z= input()
m ## map over each element d of Q
+ d ## add to d
*O2vz ## the product of eval(z) and a random number chosen from [0, 1]
Using floating point:
m+*<.5O0vz
Try it here