It is haskell or Marlowe blockly the right choice?

I would like to make a contract between a random address doing stake in a stake pool. This contract should run every X period of time and the user should be random every time the contract runs again. It should be done with haskel right?