added threadlocalrandom  random double generation