I've made a working Bow tool, which shoots a projectile(arrow) in the direction your mouse is looking. I'd like to add accuracy to the bow, which can be customized. So for example, if the Accuracy is 100, there should be little margin of error, but if the Accuracy is 90, the margin of error increases.
local Accuracy = 100
local arrow = d3.Arrow ---Arrow is a Part located inside "d3" which is a model specified earlier in Script.
local shot = arrow:Clone()
local head = char.Head
shot.CFrame = head.CFrame + mouse.Hit.lookVector * 2 - Vector3.new(0,0.25,0) ---Position Arrow.
local startPos = shot.Position
local direction = mouse.Hit.lookVector
shot.CFrame = CFrame.new( startPos, startPos + direction ) ---Rotates arrow to shoot straight.
local bod = script.Bod:Clone()
bod.Force = Vector3.new(0, 196.2, 0) * (shot:GetMass())/1.15 ---Less gravity for flight.
bod.Parent = shot
local hurt = script.Killer:Clone() ---Hit detection Script that deals damage.
hurt.Parent = shot
hurt.Dmg.Value = damage
hurt.Disabled = false
shot.Parent = workspace
shot.Transparency = 0
shot.CanCollide = false
local way = mouse.Hit.lookVector
shot.Velocity = 130 * way ---This is where I'd like the Accuracy to come into play, the lower the accuracy, the more the arrow can shoot in a direction other than where the mouse is looking.
I hope that all makes sense, thanks for reading.

2 comments
What do you mean I'll need an ending position?
Well, you'll need to know where the bullet/arrow will end up for this to work.