2009年10月6日火曜日

乱数モジュール

randomモジュールをインポートすると、乱数関連の機能を使えるようになります。

>>> import random
>>> random.random()
0.40109116074255802
>>> random.random()
0.19860637981500229
>>> random.random()
0.095362165518568798

Pythonを使って、ゲームやシミュレータを開発する場合はお世話になりそうなモジュールですね。randomモジュールには以下のような属性があるようですが、ほとんど意味がわかりません。

>>> dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'System
Random', 'TWOPI', 'WichmannHill', '_BuiltinMethodType', '_MethodType', '__all__'
, '__builtins__', '__doc__', '__file__', '__name__', '_acos', '_ceil', '_cos', '
_e', '_exp', '_hexlify', '_inst', '_log', '_pi', '_random', '_sin', '_sqrt', '_t
est', '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'expovari
ate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'jumpahead', 'lognormv
ariate', 'normalvariate', 'paretovariate', 'randint', 'random', 'randrange', 'sa
mple', 'seed', 'setstate', 'shuffle', 'uniform', 'vonmisesvariate', 'weibullvari
ate']
>>>

randomメソッド以外に、いくつか使ってみました。

choiceメソッド: 与えられた「シーケンス」からランダムな要素を返す
リストはシーケンスの一種なので、引数としてリストを使える。
>>> random.choice([1,2,3,4,5])
3
>>> random.choice([1,2,3,4,5])
1
>>> random.choice([1,2,3,4,5])
5
>>> random.choice([1,2,3,4,5])
3
「タプル」もシーケンスなので、同様に動作。
>>> random.choice((1,2,3,4,5))
4
>>> random.choice((1,2,3,4,5))
2
>>> random.choice((1,2,3,4,5))
3
>>> random.choice((1,2,3,4,5))
3

randrange: 2つの数字の間のランダムな整数を返す
>>> random.randrange(1,10)
6
>>> random.randrange(1,10)
7
>>> random.randrange(1,10)
6
>>> random.randrange(1,10)
8
>>> random.randrange(1,10)
6
ヘルプをみてみると、いろんなオプションが使えるようですが、無暗に使うなと警告されています。
>>> help(random.randrange)
Help on method randrange in module random:

randrange(self, start, stop=None, step=1, int=, default=None, maxwid
th=9007199254740992L) method of random.Random instance
Choose a random item from range(start, stop[, step]).

This fixes the problem with randint() which includes the
endpoint; in Python this is usually not what you want.
Do not supply the 'int', 'default', and 'maxwidth' arguments.

0 件のコメント:

コメントを投稿