如何在使用 random.choice 时修复种子? [英] How to fix the seed while using random.choice?

查看:46
本文介绍了如何在使用 random.choice 时修复种子?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我在此处

import random

l = [11.1, 22.2, 33.3, 11.1, 33.3, 33.3, 22.2, 55.5]

l_new = random.choices(l, k=30)
print(l_new)

random.choice 使用来自 l 的值生成一个新列表.我想每次通过修复 random.choice 的种子来创建相同的输出.

random.choice generates a new list using values from l. I would like to create the same output each time by fixing the seed of random.choice.

建议会很有帮助.

获得的输出:运行 1:

Output obtained: Run1:

[33.3, 33.3, 33.3, 33.3, 55.5, 11.1, 11.1, 55.5, 22.2, 11.1, 33.3, 11.1, 55.5, 22.2, 33.3, 22.2, 22.2, 33.3, 55.5, 11.1, 11.1, 55.5, 11.1, 33.3, 11.1, 33.3, 33.3, 22.2, 33.3, 11.1]

运行 2:

[22.2, 11.1, 33.3, 55.5, 33.3, 22.2, 33.3, 11.1, 22.2, 11.1, 11.1, 33.3, 33.3, 22.2, 33.3, 22.2, 11.1, 11.1, 55.5, 55.5, 33.3, 11.1, 55.5, 22.2, 33.3, 33.3, 55.5, 22.2, 22.2, 33.3]

预期:

运行 1:

[22.2, 11.1, 33.3, 55.5, 33.3, 22.2, 33.3, 11.1, 22.2, 11.1, 11.1, 33.3, 33.3, 22.2, 33.3, 22.2, 11.1, 11.1, 55.5, 55.5, 33.3, 11.1, 55.5, 22.2, 33.3, 33.3, 55.5, 22.2, 22.2, 33.3]

运行 2:

[22.2, 11.1, 33.3, 55.5, 33.3, 22.2, 33.3, 11.1, 22.2, 11.1, 11.1, 33.3, 33.3, 22.2, 33.3, 22.2, 11.1, 11.1, 55.5, 55.5, 33.3, 11.1, 55.5, 22.2, 33.3, 33.3, 55.5, 22.2, 22.2, 33.3]

推荐答案

您可以使用 random.seed()

import random

l = [11.1, 22.2, 33.3, 11.1, 33.3, 33.3, 22.2, 55.5]
random.seed(1)

l_new = random.choices(l, k=30)
print(l_new)

输出运行 1:

[55.5, 55.5, 11.1, 11.1, 22.2, 33.3, 33.3, 33.3, 33.3, 33.3, 33.3, 22.2, 11.1, 11.1, 33.3, 55.5, 55.5, 33.3, 11.1, 33.3, 11.1, 11.1, 11.1, 33.3, 11.1, 55.5, 33.3, 33.3, 22.2, 11.1]

输出运行 2:

[55.5, 55.5, 11.1, 11.1, 22.2, 33.3, 33.3, 33.3, 33.3, 33.3, 33.3, 22.2, 11.1, 11.1, 33.3, 55.5, 55.5, 33.3, 11.1, 33.3, 11.1, 11.1, 11.1, 33.3, 11.1, 55.5, 33.3, 33.3, 22.2, 11.1]

这段代码每次运行都会产生相同的结果.

This code will always generate the same result each run.

如果您使用 numpy,则有 numpy.random.seeed()

In case you use numpy there is numpy.random.seeed()

import numpy

l = [11.1, 22.2, 33.3, 11.1, 33.3, 33.3, 22.2, 55.5]

numpy.random.seed(1)
l_new = list(numpy.random.choice(l, size=30))
print(l_new)

输出运行 1:

[33.3, 11.1, 33.3, 11.1, 55.5, 22.2, 11.1, 33.3, 55.5, 11.1, 11.1, 22.2, 33.3, 55.5, 33.3, 33.3, 22.2, 22.2, 33.3, 33.3, 22.2, 33.3, 33.3, 33.3, 11.1, 33.3, 33.3, 33.3, 33.3, 22.2]

输出运行 2:

[33.3, 11.1, 33.3, 11.1, 55.5, 22.2, 11.1, 33.3, 55.5, 11.1, 11.1, 22.2, 33.3, 55.5, 33.3, 33.3, 22.2, 22.2, 33.3, 33.3, 22.2, 33.3, 33.3, 33.3, 11.1, 33.3, 33.3, 33.3, 33.3, 22.2]

这篇关于如何在使用 random.choice 时修复种子?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆