【问题标题】:如何将此随机生成器从 JS 转换为 Python 版本
【发布时间】:2016-01-31 17:02:24
【问题描述】:

javascript版本:

Math.floor((1+Math.random())*65536).toString(16).substring(1)

我能想到的python版本:

def _get_number_in_hex():
    tmp = int((1+random.random())*65536)
    return hex(tmp)[3:]

我的python版本有什么问题吗,应该和js版本一样。

【问题讨论】:

  • 既然有些javascript程序员对python一无所知,有些python程序员对javascript一无所知(是啊……我真的对javascript一无所知),那解释一下这些版本能做什么?您期望的输出是什么?

标签: javascript python


【解决方案1】:

喜欢这个有答案的事实,因为我遇到了完全相同的挑战。但是,似乎在较新的 python 版本中语法略有变化,因此将其发布在这里以供下一个男人或女孩使用;

str(os.urandom(4)).encode().hex()[5:9]

【讨论】:

    【解决方案2】:

    不要费心去复制那个垃圾生成器。使用随机字节并将它们编码为十六进制(如果这是你想要的)

    import os
    os.urandom(4).encode('hex')[0:4]
    os.urandom(4).encode('hex')[0:4]
    os.urandom(4).encode('hex')[0:4]
    os.urandom(4).encode('hex')[0:4]
    

    输出

    0b93
    72f8
    7ec0
    1204
    

    【讨论】:

    • so - 在最近的 python 版本中不起作用。试过str(os.urandom(4)).encode().hex()[0:4],但不一样。在这里更新会很棒:)
    • 虽然str(os.urandom(4)).encode().hex()[5:9] XD 有效
    猜你喜欢
    • 2013-08-04
    • 2022-10-24
    • 1970-01-01
    • 2019-11-29
    • 2021-08-19
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多