【问题标题】:Implementation of a pseudorandom generator in PythonPython中伪随机生成器的实现
【发布时间】:2015-10-13 17:26:42
【问题描述】:

我正在阅读 Gilad Asharov、Yehuda Lindell、Thomas SchneiderMichael Zohner 撰写的名为 More Efficient Oblivious Transfer Extensions with Security for Malicious Adversaries 的论文。

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

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

我的问题是:如何在 Python 中实现它?

如何实现一个伪随机生成器,它接受大小为 k 的种子并产生大小为 m 的输出?

【问题讨论】:

标签: python python-3.x random


【解决方案1】:

你总是可以生成a string of m ones :-) ...

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

【讨论】:

    【解决方案2】:

    你可以使用 itertools 和 random.choice() 这个将产生“01”,长度为 40 排列,大小为 39, 并且 islice 会在 1000 人中获得前 10 人。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-08
      • 1970-01-01
      • 2014-05-18
      • 2012-08-10
      • 1970-01-01
      • 1970-01-01
      • 2015-08-07
      • 2012-02-12
      相关资源
      最近更新 更多