伪码解释

2024-06-02 08:48:26 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的伪代码如何翻译成Python?在

function IntNoise(32-bit integer: x)             

    x = (x<<13) ^ x;
    return ( 1.0 - ( (x * (x * x * 15731 + 789221) + 1376312589) & 7fffffff) / 1073741824.0);    

end IntNoise function  

我不确定以下项目:IntNoise调用中的32-bit integer: x参数;<<和{}。在

此函数是来自此网页的随机数生成器:Perlin Noise。在


Tags: 项目函数代码网页参数returnbitfunction
3条回答

作为一个学习练习-很好,但是一旦你理解了它,只需将os.urandom(4)用于随机数,或者将{}中的函数用于各种伪随机生成器。在

一行行一行,更改如下:

  1. function IntNoise(32-bit integer: x)

    我们不需要声明参数类型,也不希望使用CamelCase,因此第一行是:

    def intnoise(x):
    
  2. 下一行唯一的错误是分号。除去它,我们得到:

    ^{pr2}$

    x将左移13位,然后结果将按位异或-ed,起始值为x。

  3. 在下一行,再次没有分号,7ffffff需要加上0x前缀,因此:

    return ( 1.0 - ( (x * (x * x * 15731 + 789221) + 1376312589) & 0x7fffffff) / 1073741824.0)
    

总之,这使得:

def intnoise(x):
    x = (x << 13) ^ x
    return (1.0 - ((x * (x * x * 15731 + 789221) + 1376312589) & 0x7fffffff) / 1073741824.0)

“32位整数”部分没有,除非使用numpy.int32。当它有意义时,只需将值屏蔽为32位。在

“<;<;”代表。在

需要转换“&7fffffff”。“&;”表示,但十六进制文本需要一个位:0x7fffffff。在

相关问题 更多 >