fork download
  1. import random
  2. import timeit
  3.  
  4. def ThierryLathuille():
  5. digits = set(range(10))
  6. first = random.randint(1, 9)
  7. last_3 = random.sample(digits - {first}, 3)
  8. return first*1000 + last_3[0]*100 + last_3[1]*10 + last_3[2]
  9.  
  10. def karakfa():
  11. r4=0
  12. while r4 < 1000:
  13. r4=int(''.join(map(str,random.sample(range(10),4))))
  14. return r4
  15.  
  16. def AustinHastings():
  17. numbers = [0]
  18. while numbers[0] == 0:
  19. numbers = random.sample(range(10), 4)
  20. return numbers[0]*1000 + numbers[1]*100 + numbers[2]*10 + numbers[3]
  21.  
  22. def MSeifert():
  23. val = 1111 # initial value containing duplicates so the while loop is entered.
  24. while len(set(str(val))) != 4: # check if it's duplicate free
  25. val = random.randint(1023, 9876)
  26. return val
  27.  
  28. def tevemadar():
  29. digits=[1,2,3,4,5,6,7,8,9]
  30. random.shuffle(digits)
  31. first, digits[0] = digits[0], 0
  32. random.shuffle(digits)
  33. return first*1000 + digits[0]*100 + digits[1]*10 + digits[2]
  34.  
  35. def foobar():
  36. l = [0,1,2,3,4,5,6,7,8,9]
  37. random.shuffle(l)
  38. if l[0] == 0:
  39. pos = random.choice(range(1, len(l)))
  40. l[0], l[pos] = l[pos], l[0]
  41. return l[0]*1000 + l[1]*100 + l[2]*10 + l[3]
  42.  
  43. if __name__ == "__main__":
  44. print("Austin Hastings:",
  45. timeit.timeit("AustinHastings()",
  46. number=100000,
  47. setup="from __main__ import AustinHastings"))
  48. print("foobar:",
  49. timeit.timeit("foobar()",
  50. number=100000,
  51. setup="from __main__ import foobar"))
  52. print("MSeifert:",
  53. timeit.timeit("MSeifert()",
  54. number=100000,
  55. setup="from __main__ import MSeifert"))
  56. print("karakfa:",
  57. timeit.timeit("karakfa()",
  58. number=100000,
  59. setup="from __main__ import karakfa"))
  60. print("ThierryLathuille:",
  61. timeit.timeit("ThierryLathuille()",
  62. number=100000,
  63. setup="from __main__ import ThierryLathuille"))
  64. print("tevemadar:",
  65. timeit.timeit("tevemadar()",
  66. number=100000,
  67. setup="from __main__ import tevemadar"))
Success #stdin #stdout 3.65s 38232KB
stdin
Standard input is empty
stdout
Austin Hastings: 0.5626529231667519
foobar: 0.5483845956623554
MSeifert: 0.3142064083367586
karakfa: 0.676659407094121
ThierryLathuille: 0.5952403713017702
tevemadar: 0.9375964421778917