提前说明,以下内容与一份作业有关,但本身并不是作业。作业要求使用噪声来生成酷炫的图形。我在Python方面有一些经验,但还不足以解决这个简单的问题。
我在生成区间为[-1,1]的随机种子时遇到了问题。我的老师给我提供的伪代码来源于Hugo Elias。
伪代码:
function Noise1(integer x, integer y)
n = x + y * 57
n = (n<<13) ^ n;
return ( 1.0 - ( (n * (n * n * 15731 + 789221) + 1376312589) & 7fffffff) / 1073741824.0);
end function
我在Python中的尝试:
def noise(x, y):
n = x + y * 57
n = (n<<5) ^ n;
return ( 1.0 - ( (n * (n * n * 15731 + 789221) + 1376312589) & 7fffffff) / 1073741824.0)
问题出在返回语句中的
& 7fffffff
位上。首先,我不确定那个操作是什么。也许是位移?其次,我不知道如何在Python中执行该操作。我只是将那部分删除了,但我得到的是非常大的负数,远远不是[-1,1]范围内的数。
& 7fffffff
怎么办?我该如何在Python中实现它? - jb.& 0x7FFFFFFF
- Serdalis7fffffff
是十六进制,在 Python 中需要写作0x7fffffff
,这样 Python 才能正确解释。在较新的 Python 版本中,也可以使用'0b'
表示二进制。 - Eli Collins