关于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 <= 20 
print random.randint(20, 20) #结果永远是20 
#print random.randint(20, 10) #该语句是错误的。

random.randrange方法从指定范围内,按指定基数递增的集合中 ,下面对python生成随机数的应用程序的部分介绍:

1.随机整数:

>>> import random
>>> random.randint(0,99)
21

2.随机选取0到100间的偶数:

>>> import random
>>> random.randrange(0, 101, 2)
42

3.随机浮点数:

>>> import random
>>> random.random() 
0.85415370477785668
>>> random.uniform(1, 10)
5.4221167969800881

4.随机字符:

>>> import random
>>> random.choice(\'abcdefg&#%^*f\')
\'d\'

5.多个字符中选取特定数量的字符:

>>> import random
random.sample(\'abcdefghij\',3) 
[\'a\', \'d\', \'b\']

6.多个字符中选取特定数量的字符组成新字符串:

>>> import random
>>> 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函数

用python生成随机数的几种方法

python中的随机数生成

Python 随机产生[0,100]以内的随机数,找到最大值和最小值并交换位置

转载python 模块 - random生成随机数模块