带有种子的固定随机排列
A fixed, random permutation with a seed
我想在数据框中获取一个字符串列 C1,或者您可以想象一个字符串列表,我想得到一个新列,其中的条目按行随机排列C1 中行中的元素。具体来说,我想要由种子定义的每个元素的固定排列。它会像函数 f 一样工作,其中满足以下条件:
f(a) = b
如果我再运行它
f(a) = b
其中 b 是 a 的随机排列。我希望 f 被一些种子参数化,这样我就可以很容易地创建一个新函数 g,它也是一个满足
的随机排列
g(a) = c 不等于 b
当我再次运行时
g(a) = c 不等于 b
本质上,我想要一个随机排列函数的列表,每个排列函数都由某些东西(比如一个整数)参数化并且在给定固定种子的情况下是可重复的。或者,换句话说,我想要一种通过提供种子来创建新的修复、随机排列函数的方法。
为了向您展示我的意思,我快速搜索并找到了这个网站:
https://note.nkmk.me/en/python-random-shuffle/
导致此代码:
sr = ''.join(random.sample(s, len(s)))
这是一个随机排列,但不可重复。这意味着当你再次调用它时
sr = ''.join(random.sample(s, len(s)))
sr 不一样,这意味着您“没有”固定的随机排列函数。因此,几分钟的搜索不会产生任何结果。我相信有一种规范的方法来获得这些随机排列函数,我需要有人来展示这种规范的方法。
编辑:
看起来我没有正确使用种子(或根本没有)。如果您按以下方式调用随机样本,您将获得一个可重复的随机排列函数:
>>> random.seed(53434)
>>> print(''.join(random.sample(a,len(a))))
当您想将随机抽样重置为可预测状态时,您只需调用 random.seed()
:
>>> random.seed(10)
>>> "".join(random.sample("asdfqwerzxcv", 12))
'xaercsfwdqzv'
>>> "".join(random.sample("asdfqwerzxcv", 12))
'zrwsfxdacqve'
>>> random.seed(10)
>>> "".join(random.sample("asdfqwerzxcv", 12))
'xaercsfwdqzv'
>>> "".join(random.sample("asdfqwerzxcv", 12))
'zrwsfxdacqve'
我想在数据框中获取一个字符串列 C1,或者您可以想象一个字符串列表,我想得到一个新列,其中的条目按行随机排列C1 中行中的元素。具体来说,我想要由种子定义的每个元素的固定排列。它会像函数 f 一样工作,其中满足以下条件:
f(a) = b
如果我再运行它
f(a) = b
其中 b 是 a 的随机排列。我希望 f 被一些种子参数化,这样我就可以很容易地创建一个新函数 g,它也是一个满足
的随机排列g(a) = c 不等于 b
当我再次运行时
g(a) = c 不等于 b
本质上,我想要一个随机排列函数的列表,每个排列函数都由某些东西(比如一个整数)参数化并且在给定固定种子的情况下是可重复的。或者,换句话说,我想要一种通过提供种子来创建新的修复、随机排列函数的方法。
为了向您展示我的意思,我快速搜索并找到了这个网站:
https://note.nkmk.me/en/python-random-shuffle/
导致此代码:
sr = ''.join(random.sample(s, len(s)))
这是一个随机排列,但不可重复。这意味着当你再次调用它时
sr = ''.join(random.sample(s, len(s)))
sr 不一样,这意味着您“没有”固定的随机排列函数。因此,几分钟的搜索不会产生任何结果。我相信有一种规范的方法来获得这些随机排列函数,我需要有人来展示这种规范的方法。
编辑: 看起来我没有正确使用种子(或根本没有)。如果您按以下方式调用随机样本,您将获得一个可重复的随机排列函数:
>>> random.seed(53434)
>>> print(''.join(random.sample(a,len(a))))
当您想将随机抽样重置为可预测状态时,您只需调用 random.seed()
:
>>> random.seed(10)
>>> "".join(random.sample("asdfqwerzxcv", 12))
'xaercsfwdqzv'
>>> "".join(random.sample("asdfqwerzxcv", 12))
'zrwsfxdacqve'
>>> random.seed(10)
>>> "".join(random.sample("asdfqwerzxcv", 12))
'xaercsfwdqzv'
>>> "".join(random.sample("asdfqwerzxcv", 12))
'zrwsfxdacqve'