BoxMesh(nx, ny, nz, 1.0, 1.0, 2.0), where nx, ny and nz are the number of cells in the x, y and z direction respectively. Ideally (see below), each cuboid is divided into 6 tetrahedra, so the total number of cells is 6*nx*ny*nz, so you can control this exactly.
Unfortunately, there is a trap: if you want cells whose x, y and z dimensions are very different, the mesh generator will generate extra points.
With the dimensions you gave above, if you have nx = 10, ny = 10, nz = 20, you get what you expect - lots of cubes, each divided into 6 tetrahedra.
However, if you have nx = 5, ny = 5, nz = 100, you get something completely different (lots of small cells).
You can visualise the mesh by using
File("mesh.pvd") << mesh.coordinates
and opening the file in Paraview in 'Wireframe' mode.
There's a very easy workaround, so do reply if this is a problem for you.
Best,
Andrew