если вы в любом случае используете изменяемое состояние, вы должны использовать изменяемую коллекцию, такую как буфер, которую вы также можете добавить с помощью +=
(который тогда будет действительным аналогом java-кода).
но почему ты не используешь понимание списка?
val f = for (_ <- 1 to 200000) yield (math.random * 100)
кстати: var f = List(0.0)
... f = f.tail
можно заменить на var f: List[Double] = Nil
в вашем примере. (не больше производительности, но больше красоты;)