python 中的随机数
2017-09-12
python 下随机数相关的处理, 使用random
模块
从列表中随机获取一个
如果我们有一个列表, 想随机的获取一个,
In [99]: import random
In [100]: x = [832, 238, 12, 4, 93, 923]
In [101]: random.choice(x)
Out[101]: 832
In [102]: random.choice(x)
Out[102]: 4
In [103]: random.choice(x)
Out[103]: 93
从列表中随机获取若干个
如果我们想从列表中随机获取若干个, 而不是一个呢
In [108]: random.sample(x, 2)
Out[108]: [923, 238]
In [109]: random.sample(x, 2)
Out[109]: [4, 238]
In [110]: random.sample(x, 2)
Out[110]: [238, 832]
In [112]: random.sample(x, 3)
Out[112]: [4, 238, 832]
如果想从某个范围里获取若干个随机数, 使用range作为第一个参数, 生成范围列表, 这种方式既快, 又节省空间
如下
random.sample(range(10000), 30)
# [113,1898,2146,4340,1851,1753,2538,4673,5310,3898,4906,2339,4575,7513,1061,4164,5386,6417,7131,3913,1822,2942,1674,4718,4554,4454,5098,5911,5880,8212]
选取随机字符
如果选取一个, 应用的也是choice
In [182]: random.choice('abcdefghijklmn')
Out[182]: 'm'
In [183]: random.choice('abcdefghijklmn')
Out[183]: 'a'
In [184]: random.choice('abcdefghijklmn')
Out[184]: 'm'
如果是多个字符, 应用sample
In [185]: random.sample('abcdefghijklmn', 1)
Out[185]: ['b']
In [186]: random.sample('abcdefghijklmn', 2)
Out[186]: ['m', 'j']
In [187]: random.sample('abcdefghijklmn', 3)
Out[187]: ['j', 'e', 'f']
In [188]: random.sample('abcdefghijklmn', 3)
Out[188]: ['b', 'f', 'c']
生成随机整数
random.randint 用于生成随机整数
In [120]: random.randint(100, 200)
Out[120]: 166
In [121]: random.randint(100, 200)
Out[121]: 127
In [122]: random.randint(100, 200)
Out[122]: 106
生成随机偶数
random.randrange 可用于生成随机偶数
In [174]: random.randrange(0, 99, 2)
Out[174]: 22
In [175]: random.randrange(0, 99, 2)
Out[175]: 52
In [176]: random.randrange(0, 99, 2)
Out[176]: 88
In [177]: random.randrange(0, 99, 2)
Out[177]: 72
生成随机奇数
生成的偶数 +1 就变成了一个奇数 :-)
生成0~1随机浮点数
random.random 用于生成0~1区间内的浮点数
In [123]: random.random()
Out[123]: 0.3224130651756335
In [124]: random.random()
Out[124]: 0.9322351857889607
In [125]: random.random()
Out[125]: 0.4660361703787592
In [126]: random.random()
Out[126]: 0.3151170441943645
列表乱序
将列表的顺序打乱
In [145]: random.shuffle(x)
In [146]: x
Out[146]: [12, 923, 238, 93, 832, 4]
In [147]: random.shuffle(x)
In [148]: x
Out[148]: [923, 93, 4, 238, 832, 12]
这里要注意的是, 列表打乱顺序后, 修改的是源数组
In [147]: random.shuffle(x)
In [148]: x
Out[148]: [923, 93, 4, 238, 832, 12]
In [149]: id(x)
Out[149]: 4412865480
In [150]: random.shuffle(x)
In [151]: x
Out[151]: [238, 4, 12, 923, 832, 93]
In [152]: id(x)
Out[152]: 4412865480