在Python

时间:2015-10-13 17:26:42

标签: python python-3.x random

我正在阅读由 Gilad Asharov,Yehuda Lindell,Thomas Schneider Michael Zohner 撰写的一篇名为More Efficient Oblivious Transfer Extensions with Security for Malicious Adversaries的论文。

在第8页,他们展示了他们的协议。在展示所使用的工具时,他们写道:

pseudorandom generator G

如果我的理解是正确的,他们使用一个名为G的伪随机生成器,其中将一个由零和长度为k的对象作为输入,并产生一个零和一个长度为m 的对象。

我的问题是:如何在Python中实现此功能?

如何实现伪随机生成器,该生成器采用大小为k的种子并生成大小为m的输出?

2 个答案:

答案 0 :(得分:2)

您可以随时生成a string of m ones :-) ...

分开一个简单的解决方案是将输入数字(在02**k-1之间)提供给random.seed,然后从random.randrange(1<<m)获取结果。< / p>

答案 1 :(得分:0)

你可以使用itertools和random.choice() 这个将产生于&#39; 01&#39;长度为40的排列,大小为39, 并且islice会在1000分中获得10分。

>>> li = list(it.islice(map(''.join,permutations('01' * 40, 39)),1000))
>>> item = random.choice(li)
>>> print(item)
010101010101010101010101010101010101010