我正在这样做:
random.randint(90, 110)
很基本,随机返回90到110之间的值。
但是,我将代码运行30次,并且我希望在前10个迭代中更改这些随机值,但我希望接下来的10个更改与前10个迭代相同的方式(例如,第11个/ 21st迭代与1st迭代相同,第12 / 22nd = 2nd,等等。
我尝试使用random.seed(),以便在迭代过程中更改种子并尝试对其进行操作,以使第1次和第11/21次迭代的种子相同。但这似乎不起作用,因为random.seed()似乎只能起作用一次。
任何这样做的方法还是没有道理?
编辑:这是我尝试使用random.seed()做到的方式:
i = 0
while i < 30:
if i < 10:
sd = 100+i
elif (i >= 10) and (i < 20):
sd = 100+i-10
elif i >= 20:
sd = 100+i-20
random.seed(sd)
答案 0 :(得分:3)
您使用随机种子的想法是正确的;您可以这样实现:
每10次迭代,重置种子,并且伪随机数序列从头开始重新启动。
import random
SEED = 1234
for idx in range(30):
if idx % 10 == 0:
random.seed(SEED)
print()
print(random.randrange(90, 110), end= ' ')
94 103 99 106 106 95 95 106 110 108
94 103 99 106 106 95 95 106 110 108
94 103 99 106 106 95 95 106 110 108
答案 1 :(得分:0)
首先使用所需的重复次数生成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
答案 2 :(得分:0)
如果没有random.seed
,则可以使用列表理解和join
来实现。
查找前10个随机数,然后将其复制为30个计数。
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
答案 3 :(得分:0)
这是一个有效的代码。我使用数组来存储前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
输出:
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