Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何调用与先前迭代相同的随机值?_Python - Fatal编程技术网

Python 如何调用与先前迭代相同的随机值?

Python 如何调用与先前迭代相同的随机值?,python,Python,我正在这样做: random.randint(90, 110) 非常基本,随机返回90到110之间的值 然而,我正在运行代码30次,我希望这些随机值在前10次迭代中更改,但我希望下10次的更改方式与前10次相同(即第11/21次迭代中的随机值与第1次迭代中的随机值相同,第12/22次=第2次,等等) 我尝试使用random.seed(),以便种子在迭代过程中发生变化,并尝试对其进行操作,以便种子在第1次迭代和第11/21次迭代中是相同的。但这似乎不起作用,因为random.seed()似乎只起

我正在这样做:

random.randint(90, 110)
非常基本,随机返回90到110之间的值

然而,我正在运行代码30次,我希望这些随机值在前10次迭代中更改,但我希望下10次的更改方式与前10次相同(即第11/21次迭代中的随机值与第1次迭代中的随机值相同,第12/22次=第2次,等等)

我尝试使用random.seed(),以便种子在迭代过程中发生变化,并尝试对其进行操作,以便种子在第1次迭代和第11/21次迭代中是相同的。但这似乎不起作用,因为random.seed()似乎只起作用一次

有没有办法这样做或者这样做没有意义

编辑:这就是我尝试使用random.seed()进行编辑的方式:

i=0
当我<30时:
如果i<10:
sd=100+i
elif(i>=10)和(i<20):
sd=100+i-10
如果i>=20:
sd=100+i-20
随机种子(sd)

您使用随机种子的想法是正确的;您可以这样实现它:

每10次迭代,种子被重置,伪随机数序列从一开始就重新开始

import random


SEED = 1234


for idx in range(30):

    if idx % 10 == 0:
        random.seed(SEED)
        print()
    print(random.randrange(90, 110), end= ' ')
输出:
首先生成30个重复类型的种子,然后在生成随机数之前设置种子

import random

seeds = np.arange(10)
seeds = np.hstack((seeds,seeds,seeds))

for i in range(30):

    random.seed(seeds[i])
    if i%10 ==0:
        print()
    print(random.randint(90, 110),end=' ')
输出:

102 94 91 97 97 109 108 100 97 104 
102 94 91 97 97 109 108 100 97 104 
102 94 91 97 97 109 108 100 97 104 

如果没有
random.seed
,您可以使用列表理解和
join

找到前10个随机数,然后将它们复制到相等的30个计数


这是一个有效的代码。我使用数组来存储前10个随机条目,每次都使用I%10来获得适当的值

import random
random_arr=[] # 10 random numbers will be stored here
for i in range(10):
    random_arr.append(random.randint(10,90))

i = 0
while(i < 30):
    random_value = random_arr[i%10]
    print(random_value,end=" ")
    i+=1

所以你想让第1次、第11次、第21次迭代返回相同的值,类似地,第2次、第12次和第22次,依此类推?是的。我希望它们是90/110之间的随机值,但在这些迭代中是相同的值。不确定种子计算的目的是什么,但如果先使用
state=randon.getstate()
保存状态,然后再使用
random.setstate(st)
,在设置状态后,你应该得到与之前相同的随机数。对不起,我在帖子中忘了提到我正在处理列表。这个解决方案是可行的,但我正在努力使它适应列表的使用-相同的场景,除了有30个列表。每个列表中的随机值,然后第一个列表应该与第11/21个列表相同,等等。您能帮我更改它吗?好的,很酷,很高兴您能够使用我的建议,并使其适用于您。
102 94 91 97 97 109 108 100 97 104 
102 94 91 97 97 109 108 100 97 104 
102 94 91 97 97 109 108 100 97 104 
import random

randoms = []

for _ in range(10):
    randoms.append(random.randint(90, 110))

print('\n'.join([' '.join(map(str, randoms)) for _ in range(3)]))

# 110 108 93 104 98 101 95 99 104 94
# 110 108 93 104 98 101 95 99 104 94                             
# 110 108 93 104 98 101 95 99 104 94
import random
random_arr=[] # 10 random numbers will be stored here
for i in range(10):
    random_arr.append(random.randint(10,90))

i = 0
while(i < 30):
    random_value = random_arr[i%10]
    print(random_value,end=" ")
    i+=1
32 27 28 86 11 54 26 24 38 16 32 27 28 86 11 54 26 24 38 16 32 27 28 86 11 54 26 24 38 16