生成随机数
np.random.uniform(low=0.0, high=1.0, size=None)
作用:可以生成[low,high)中的随机数,可以是单个值,也可以是一维数组,也可以是多维数组
参数介绍:
low :float型,或者是数组类型的,默认为0
high:float型,或者是数组类型的,默认为1
size:int型,或元组,默认为空
np.random.randint(low, high=None, size=None, dtype=’l’)
作用:生成[low, high)整型随机数,可以是单个随机数,也可以是多维的随机数构成的数组 ,生成的随机数可能有重复
参数介绍:
low:int 型,随机数的下限
high:int 型,默认为空,随机数的上限,当此值为空时,函数生成[0,low)区间内的随机数
size:int、或ints、或元组
dtype:可选’int’ ,’int32’,默认为’l’,指明生成的随机数的类型
python 指定范围内随机生成不重复的n个数
import random
random.sample(range(A,B),N)
多进程使用np.random时,默认每个进程会有相同的初始状态, 如果直接使用, 每个进程生成的随机序列会完全一致.故每个进程需要使用np.random.RandomState() 生成一个新的随机数引擎实例,例如:
import numpy as np
import random
import multiprocessing
def gen_value():
# '''
values = []
randomstate = np.random.RandomState()
for i in range(5):
values.append(randomstate.randint(100)) # 每个进程初始化以后生成的随机数不一样
# values.append(np.random.randint(100)) # 直接使用则每个进程生成的values一样
# '''
# values = random.sample(range(100),5) # 直接使用则每个进程生成的values不一样
print(values)
# procs = [multiprocessing.Process(target=gen_value, args=(np.random.RandomState(),)) for i in range(10)]
procs = [multiprocessing.Process(target=gen_value) for _ in range(10)]
for p in procs:
p.start()
p.join()
生成颜色池
import colorsys
import random
def random_colors(N, bright=True):
"""
Generate random colors.
To get visually distinct colors, generate them in HSV space then
convert to RGB.
"""
brightness = 1.0 if bright else 0.7
hsv = [(i*1.0 / N, 1, brightness) for i in range(N)]
colors = list(map(lambda c: colorsys.hsv_to_rgb(*c), hsv))
random.shuffle(colors)
colors = [tuple(color_pool*255) for color_pool in np.array(colors)]
return colors
color_pools = random_colors(20) #生成20种颜色
#color_pools为一个list,里面为20个三元组,每个元组为0~255之间的颜色值
#例如[(50, 1.0, 0.0), (79, 133.0, 0.0)]