updated weighted random