关于Python中的随机数生成步骤和随机数质量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Python中的随机数生成步骤和随机数质量相关的知识,希望对你有一定的参考价值。
求大神讲解写Python2.7里面random随机数生成模块中随机数生成的详细步骤,并求评价该随机数质量如何。答辩要用,急
Python生成随机数和随机数质量的方法,random.random()用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。如果a > b,则生成随机数:
print random.uniform(10, 20)print random.uniform(20, 10)
#----
#18.7356606526
#12.5798298022
random.randint
用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,Python生成随机数
print random.randint(12, 20) #生成的随机数n: 12 <= n <= 20print random.randint(20, 20) #结果永远是20
#print random.randint(20, 10) #该语句是错误的。
random.randrange方法从指定范围内,按指定基数递增的集合中 ,下面对python生成随机数的应用程序的部分介绍:
1.随机整数:
>>> random.randint(0,99)
21
2.随机选取0到100间的偶数:
>>> random.randrange(0, 101, 2)
42
3.随机浮点数:
>>> random.random()
0.85415370477785668
>>> random.uniform(1, 10)
5.4221167969800881
4.随机字符:
>>> random.choice(\'abcdefg&#%^*f\')
\'d\'
5.多个字符中选取特定数量的字符:
random.sample(\'abcdefghij\',3)
[\'a\', \'d\', \'b\']
6.多个字符中选取特定数量的字符组成新字符串:
>>> import string
>>> string.join(random.sample([\'a\',\'b\',\'c\',\'d\',\'e\',\'f\',\'g\',\'h\',\'i\',\'j\'], 3)).r
eplace(" ","")
\'fih\' 参考技术A >>> random.random() # Random float x, 0.0 <= x < 1.0
0.37444887175646646
>>> random.uniform(1, 10) # Random float x, 1.0 <= x < 10.0
1.1800146073117523
>>> random.randint(1, 10) # Integer from 1 to 10, endpoints included
7
>>> random.randrange(0, 101, 2) # Even integer from 0 to 100
26
>>> random.choice('abcdefghij') # Choose a random element
'c'
>>> items = [1, 2, 3, 4, 5, 6, 7]
>>> random.shuffle(items)
>>> items
[7, 3, 2, 5, 6, 4, 1]
>>> random.sample([1, 2, 3, 4, 5], 3) # Choose 3 elements
[4, 1, 5]
测试随机数质量一般是用以下几种测试:
Birthday spacings
Overlapping permutations
Ranks of matrices
Monkey tests
Count the 1s
Parking lot test
Minimum distance test
Random spheres test
The squeeze test
Overlapping sums test
Runs test
The craps test
谢谢。其实我想知道,系统是如何从读取系统时间到生成随机数的过程,而不是怎么用random函数。唉
追答具体的方法在Lib/random.py和Modules/_randommodule.c里面。另外,python的seed不一定是系统时间,在linux会优先 /dev/urandom
本回答被提问者和网友采纳Python3使用random生成随机数
本文介绍使用Python3中的random库生成随机数、随机小数、随机序列、随机字符串以及扑克洗牌等方法。
一、生成随机浮点数或小数
1、#生成0-1之间的浮点数
import random rnd = random.random() print(rnd)
返回
0.4116634571675989
2、#生成0-1之间的浮点数,2位精度
rnd = round(random.random(),2) print(rnd)
返回
0.86
3、#生成[1,100]之间的浮点数;
rnd = random.uniform(1, 100) print(rnd)
返回
40.46081911647691
4、#生成[1,100]之间的浮点数,2位精度
rnd = round(random.uniform(1, 100),2) print(rnd)
返回
81.31
二、生成整数、奇数、偶数
1、#生成[1,100]之间的整数
rnd = random.randint(1, 100) print(rnd)
返回
79
2、#生成[1,100]之间的整数,加百分号
rnd = str(random.randint(1, 100)) + "%" print(rnd)
返回
87%
3、#生成[1,100]之间的奇数
rnd = random.randrange(1, 100, 2) print(rnd)
返回
93
4、#生成[2,100]之间的偶数
rnd = random.randrange(2, 100, 2) print(rnd)
返回
26
三、序列中随机取元素
#从序列中随机取一个元素 rnd = random.choice([‘剪刀‘, ‘石头‘, ‘布‘]) print(rnd)
返回
剪刀
四、生成随机字符串
#生成字母数字组成的32位密钥,来源 比特量化 rnd = ‘‘.join(random.sample(‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789‘,32)) print(rnd)
返回
43bFuQln6fkGjmH1OCE9aweLz08WTsIA
五、扑克洗牌
#扑克洗牌,来源 比特量化 poker = [‘2‘,‘3‘,‘4‘,‘5‘,‘6‘,‘7‘,‘8‘,‘9‘,‘10‘,‘J‘,‘Q‘,‘K‘,‘A‘] random.shuffle(poker) print(poker)
返回
[‘9‘, ‘A‘, ‘10‘, ‘K‘, ‘Q‘, ‘3‘, ‘6‘, ‘J‘, ‘4‘, ‘7‘, ‘5‘, ‘8‘, ‘2‘]
以上是关于关于Python中的随机数生成步骤和随机数质量的主要内容,如果未能解决你的问题,请参考以下文章
用python在excel中读取与生成随机数写入excel中
python基础2:随机数生成—random模块、numpy中的random函数