Python 随机数 random

1. Python seed() 函数

    seed() 方法改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数。

    seed( )是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。如:

import random
random.seed ( [x] )

其中的参数:x  是 改变随机数生成器的种子seed。如果不了解其原理,不必特别去设定seed,Python会自动选择seed。

该函数没有返回值。

例子:

import random

random.seed( 10 )
print "Random number with seed 10 : ", random.random()

# 生成同一个随机数
random.seed( 10 )
print "Random number with seed 10 : ", random.random()

# 生成同一个随机数
random.seed( 10 )
print "Random number with seed 10 : ", random.random()

运行结果:

Random number with seed 10 :  0.57140259469
Random number with seed 10 :  0.57140259469
Random number with seed 10 :  0.57140259469

 

2. 使用 random.randint(a, b) 生成随机整数:生成一个 a≤n≤b 的随机整数,即包含a和b。

print random.randint(13, 40)  #生成的随机数n: 13 ≤ n ≤  20  
print random.randint(10, 10)  #结果永远是10  
#print random.randint(30, 20)  #该语句是错误的。下限必须小于上限

通过查看该函数的python源码可以了解到其具体的取值范围:

def randint(self, a, b):
        """Return random integer in range [a, b], including both end points.
        """
        return self.randrange(a, b+1)

因此其取值范围是包括上下限的。

 

3. 例子1:

利用 Python 随机产生1000个1~10000之间的整数,找出其中最大的5个三位数并输出。
要求: 1)利用列表存储产生的所有数。 2)将最大的5个三位数存储在一个元组中。

from random import randint
l=[randint(1,10000) for i in range(1000)]

l_sorted=sorted([i for i in l if i<1000],reverse=True)
max5=(l_sorted[0],l_sorted[1],l_sorted[2],l_sorted[3],l_sorted[4])
print(max5)

运行结果:

 

4. 例子2:返回一组随机数并归一化

# 返回一个list,该list包含k个整数随机数,s为随机数的种子
def random_init_KDvector(k, s):
    list = []

    # 设置随机种子
    random.seed(s)
    for i in range(0, k):
        tmp = random.randint(1, 10000)
        list.append(tmp)
    return list

def normalize(list,sum=0): 
    if sum==0:
        for i in range(0,len(list)):
            sum+=list[i]
    num=0
    for i in range(0,len(list)-1):
        list[i]=list[i]*1.0/sum
        num +=list[i]
    list[len(list)-1]=1-num
    return list

U = dict()
ls=random_init_KDvector(5,3)
print("ls为:",ls)
U[0]=normalize(ls)
print("U[0]为:",U[0])

#ls为: [3899, 9710, 8917, 2137, 6062]
#U[0]为: [0.12689991863303499, 0.3160292921074044, 0.29021969080553295, 0.06955248169243287, 0.1972986167615948]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值