import numpy as np
seed = 10
# 基于seed产生随机数,这是根据随机种子产生随机数的一种常用方法,要熟练运用
rdm = np.random.RandomState(seed)#random.RandomState随机数生成器
a = rdm.uniform(1,2,(3,4)) #产生1-2之间,3行4列
print(a)
结果:
[[1.77132064 1.02075195 1.63364823 1.74880388]
[1.49850701 1.22479665 1.19806286 1.76053071]
[1.16911084 1.08833981 1.68535982 1.95339335]]
import tensorflow as tf
import numpy as np
from numpy import *
def tf_run(s):
with tf.Session() as sess:
print(sess.run(s) , "\n")
#(1)tf.random_normal() 生成正态分布随机数
# 表示生成正态分布随机数,形状两行三列,标准差是2,均值是0,随机种子是1
r = tf.random_normal([2,3],stddev=2, mean=0, seed=1)
print("tf.random_normal() 生成正态分布随机数")
tf_run(r)
#(2)tf.truncated_normal() 生成去掉过大偏离点的正态分布随机数,
# 也就是如果随机生成的数据偏离平均值超过两个标准差,这个数据将重新生成
r = tf.truncated_normal([2,3],stddev=2, mean=0, seed=1)
print("tf.truncated_normal() 生成去掉过大偏离点的正态分布随机数")
tf_run(r)
# (3) tf.random_uniform() 生成均匀分布随机数
r = tf.random_uniform([2,3],minval=0,maxval=1,dtype=tf.float32,seed=1)
# 表示从一个均匀分布[minval maxval)中随机采样,产生的数是均匀分布的,
# 注意定义域是左闭右开,即包含 minval,不包含 maxval。
print("tf.random_uniform() 生成均匀分布随机数")
tf_run(r)
# (4)
'''
tf.zeros 表示生成全 0 数组
tf.ones 表示生成全 1 数组
tf.fill 表示生成全定值数组
tf.constant 表示生成直接给定值的数组
'''
print("------------")
print(np.zeros([3,2], dtype=int32))
print("------------")
tf_run( tf.zeros([3,2], int32) ) # 表示生成[[0,0],[0,0],[0,0]]
tf_run( tf.ones([3,2], int32) ) # 表示生成[[1,1],[1,1],[1,1]
tf_run( tf.fill([3,2], 6) ) # 表示生成[[6,6],[6,6],[6,6]]
tf_run( tf.constant([3,2,1]) ) # 表示生成[3,2,1]
结果:
tf.random_normal() 生成正态分布随机数
[[-1.6226364 2.9691975 0.13065875]
[-4.8854084 0.1984968 1.1824486 ]]
tf.truncated_normal() 生成去掉过大偏离点的正态分布随机数
[[-1.6226364 2.9691975 0.13065875]
[ 0.1984968 1.2793941 3.2217424 ]]
tf.random_uniform() 生成均匀分布随机数
[[0.2390374 0.92039955 0.05051243]
[0.49574447 0.8355223 0.02647042]]
------------
[[0 0]
[0 0]
[0 0]]
------------
[[0 0]
[0 0]
[0 0]]
[[1 1]
[1 1]
[1 1]]
[[6 6]
[6 6]
[6 6]]
[3 2 1]