random.seed():它做什么?

2024-03-29 15:27:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python中的random.seed()功能有点困惑。例如,为什么下面的试验要做他们所做的(一贯的)?

>>> import random
>>> random.seed(9001)
>>> random.randint(1, 10)
1
>>> random.randint(1, 10)
3
>>> random.randint(1, 10)
6
>>> random.randint(1, 10)
6
>>> random.randint(1, 10)
7

我找不到这方面的好文件。


Tags: 文件import功能randomseedrandint
3条回答

伪随机数生成器通过对值执行某些操作来工作。通常,此值是生成器生成的上一个数字。但是,第一次使用生成器时,没有先前的值。

为伪随机数生成器设定种子将为其提供第一个“previous”值。每个种子值将对应于给定随机数生成器的生成值序列。也就是说,如果两次提供相同的种子,则两次获得相同的数字序列。

通常,您希望为随机数生成器设定一些值,这些值将更改程序的每次执行。例如,当前时间是一个常用的种子。这种情况不会自动发生的原因是,如果需要,可以提供一个特定的种子来获取已知的数字序列。

>>> random.seed(9001)   
>>> random.randint(1, 10)  
1     
>>> random.seed(9001)     
>>> random.randint(1, 10)    
1           
>>> random.seed(9001)          
>>> random.randint(1, 10)                 
1                  
>>> random.seed(9001)         
>>> random.randint(1, 10)          
1     
>>> random.seed(9002)                
>>> random.randint(1, 10)             
3

你试试这个。假设'random.seed'为random value generator('random.randint()')提供了一个值,后者基于此种子生成这些值。随机数的一个必然特性是它们应该是可重复的。一旦你播下相同的种子,你就会得到相同的随机数模式。所以你从一开始就在生成它们。你给一个不同的种子,它以不同的开头(3以上)。

现在你已经给了一个种子,它将生成一个接一个1到10之间的随机数。所以你可以假设一个种子值有一组数字。

所有其他答案似乎都不能解释random.seed()的用法。 下面是一个简单的例子(source):

import random
random.seed( 3 )
print "Random number with seed 3 : ", random.random() #will generate a random number 
#if you want to use the same random number once again in your program
random.seed( 3 )
random.random()   # same random number as before

相关问题 更多 >