#Axiom + its library

    f(n:PI,a:INT,b:INT):List INT==
        r:List INT:=[]
        a>b or n>99999999 =>r
        d:=1+b-a
        for i in 1..n repeat
              r:=concat(r,a+random(d)$INT)
        r

The above f() function return as error the empty list, in the case f(n,a,b) with a>b. In other cases of invalid input, it not run with one error message in Axiom window, because argument will be not of the right type. Examples

    (6) -> f(1,1,5)
       (6)  [2]
                                                           Type: List Integer
    (7) -> f(1,1,1)
       (7)  [1]
                                                           Type: List Integer
    (10) -> f(10,1,1)
       (10)  [1,1,1,1,1,1,1,1,1,1]
                                                           Type: List Integer
    (11) -> f(10,-20,-1)
       (11)  [- 10,- 4,- 18,- 5,- 5,- 11,- 15,- 1,- 20,- 1]
                                                           Type: List Integer
    (12) -> f(10,-20,-1)
       (12)  [- 4,- 5,- 3,- 4,- 18,- 1,- 2,- 14,- 19,- 8]
                                                           Type: List Integer
    (13) -> f(10,-20,-1)
       (13)  [- 18,- 12,- 12,- 19,- 19,- 15,- 5,- 17,- 19,- 4]
                                                           Type: List Integer
    (14) -> f(10,-20,-1)
       (14)  [- 8,- 11,- 20,- 10,- 4,- 8,- 11,- 3,- 10,- 16]
                                                           Type: List Integer
    (15) -> f(10,9,-1)
       (15)  []
                                                           Type: List Integer
    (16) -> f(10,0,100)
       (16)  [72,83,41,35,27,0,33,18,60,38]
                                                           Type: List Integer