ソースコード
#!/usr/bin/python
# coding: UTF-8
import random
def make_randint_list(min, max, cnt, sortflag=False, revflag=False):
"""
重複のない乱数(整数min以上max以下)を要素としたリストを返す
"""
list = []
i = 0
while cnt != i:
r = random.randint(min, max)
try:
list.index(r) # 既にリストに存在するか
except ValueError, e:
list.append(r) # 無い場合はリストに格納
i = i + 1
if (sortflag): list.sort(reverse=revflag)
return list
def _main():
"""モジュールのチェック関数"""
print 'makerand0.py [_main()]'
print make_randint_list(10, 99, 10)
print make_randint_list(10, 99, 10, True) # 昇順ソート
print make_randint_list(10, 99, 10, True, True) # 降順ソート
if __name__ == '__main__' : _main()
#
モジュール変数__name__の中には通常はモジュール名が入っています。しかし、このモジュールファイルを直接実行した場合は__name__に’__main__’という名前が入ります。その為、if __name__ == ‘__main__’ : は真となり_main()が実行されます。
実行結果
$ python makerand0.py makerand0.py [_main()] [62, 18, 55, 44, 97, 67, 87, 16, 59, 43] [11, 13, 30, 42, 46, 52, 71, 75, 81, 92] [88, 81, 65, 60, 57, 53, 41, 34, 27, 23]
モジュールテスト用スクリプト
makerand0_test.py
#!/usr/bin/python # coding: UTF-8 from makerand import make_randint_list print make_randint_list(10, 99, 10) print make_randint_list(10, 99, 10, True) print make_randint_list(10, 99, 10, True, True)
実行結果
$ python makerand0_test.py [52, 44, 63, 61, 50, 66, 88, 45, 99, 57] [15, 26, 29, 53, 56, 69, 89, 91, 94, 95] [96, 95, 93, 88, 79, 75, 64, 62, 33, 11]