import random
import timeit
 
def ThierryLathuille():
    digits = set(range(10))
    first = random.randint(1, 9)
    last_3 = random.sample(digits - {first}, 3)
    return first*1000 + last_3[0]*100 + last_3[1]*10 + last_3[2]
 
def karakfa():
    r4=0
    while r4 < 1000:
        r4=int(''.join(map(str,random.sample(range(10),4))))
    return r4
 
def AustinHastings():
    numbers = [0] 
    while numbers[0] == 0:
        numbers = random.sample(range(10), 4)
    return numbers[0]*1000 + numbers[1]*100 + numbers[2]*10 + numbers[3]
 
def MSeifert():
    val = 1111  # initial value containing duplicates so the while loop is entered.
    while len(set(str(val))) != 4:  # check if it's duplicate free
        val = random.randint(1023, 9876)
    return val 
 
def tevemadar():
    digits=[1,2,3,4,5,6,7,8,9]
    random.shuffle(digits)
    first, digits[0] = digits[0], 0
    random.shuffle(digits)
    return first*1000 + digits[0]*100 + digits[1]*10 + digits[2]
 
def foobar():
    l = [0,1,2,3,4,5,6,7,8,9]
    random.shuffle(l)
    if l[0] == 0:
        pos = random.choice(range(1, len(l)))
        l[0], l[pos] = l[pos], l[0]
    return l[0]*1000 + l[1]*100 + l[2]*10 + l[3]
 
if __name__ == "__main__":
    print("Austin Hastings:",
          timeit.timeit("AustinHastings()",
              number=100000,
              setup="from __main__ import AustinHastings"))
    print("foobar:",
          timeit.timeit("foobar()",
              number=100000,
              setup="from __main__ import foobar"))
    print("MSeifert:",
          timeit.timeit("MSeifert()",
              number=100000,
              setup="from __main__ import MSeifert"))
    print("karakfa:",
          timeit.timeit("karakfa()",
              number=100000,
              setup="from __main__ import karakfa"))
    print("ThierryLathuille:",
          timeit.timeit("ThierryLathuille()",
              number=100000,
              setup="from __main__ import ThierryLathuille"))
    print("tevemadar:",
          timeit.timeit("tevemadar()",
              number=100000,
              setup="from __main__ import tevemadar"))