I'll reiterate my recommendation of MyOpenMath. To your points:
- It understands TeX (a simplified version, using ` math ` instead of \$ math \$)
- It sllows the use of parameters in some way to randomize numbers for each student
- It allows these parameters within the TeX code.
- It can be integrated into Blackboard (that's how I've been using it) using an LTI link. (video)
Here are some problems I wrote, together with a few randomized versions I got by clicking "New Version":
Problem #1. [Same problem coding, initiated by random "seed" numbers. This problem took 6 lines of code to write, and you can get pretty specific with how you want students to enter their answers. I left it totally open to accept decimals, fractions or expressions, provided they are equivalent to the correct answer.]
Problem #2. [Again, same problem coding, initiated by random "seed" numbers. Note that you can randomize function names and randomly order the presentation of the problem.]
Problem #3. [Same problem coding, initiated by random "seed" numbers. For the answers involving expressions, you can enter any algebraic expression equivalent to the correct answer (e.g. x(3x-1/x) or 3x^2-1+sin(0) Again, you can specify how the answer must look, such as being factored, etc. This particular problem was "scaffolded" so a student must get the first part correct before moving on to the next part. Each part can have hints, etc.]
The math is almost TeX, just with slightly simplified commands (MOM was coded in php). For example, one can type `frac(3)(4)` or just `3/4` to get $\frac{3}{4}$. Or for integrals, you can type `int_5^(3x) g(t)dt` to get $\int_5^{3x} g(t)dt$. [Notice the use of ( ) instead of { }, as well as the lack of \ characters.]
Anyway -- I hope this helps. This program has really saved me these past few terms.