[20230919]黄金分隔法0.618.txt

news/发布时间2024/5/17 1:10:29
[20230919]黄金分隔法0.618.txt

--//许多人都知道黄金分隔点=0.618,如何计算得来估计许多人不知道,我大约记得读初中时提到五边形有关,至于如何算我自己也也忘记了.
--//实际上计算公式如下:
(sqrt(5)-1)/2

$ echo (sqrt(5)-1)/2| bc -l
.61803398874989484820

--//尝试使用dc看看.
$ dc -e "20k 5 v 1 - 2 / p"
.61803398874989484820

--//实际上许多加密或者hash算法会使用这个数字有关.

$ echo (sqrt(5)-1)/2*2^32 | bc -l
2654435769.49723029645788446720

--//取整2654435769 转换16进制:
--//2654435769 = 0x9e3779b9

$ echo "obase=16;2654435769" | bc
9E3779B9

$ dc -e "16 o 2654435769 pq"
9E3779B9

--//如果你上网查询 9e3779b9 就可以找到许多类似介绍加密或者hash算法的函数与这值有关.
--//已经离开学校太久太久,感觉许多基本的知识已经完全的还给老师..........也许用 用尽废退 来比喻比较恰当.

--//也许大家会问,为什么探究这个,前几天看了链接: http://mvelikikh.blogspot.com/2023/04/computing-orahash.html
--//作者使用python语言,写了一个oracle ora_hash函数的对应例子:
--//源代码可以从如下地址获得: https://github.com/mvelikikh/oracle/blob/master/tools/ora_hash.py

def ora_hash(data, max_bucket=0xffffffff, seed=0):
    if not data:
        return
    def uint32(n):
        return n & 0xffffffff
    def int_from_bytes(data):
        return int.from_bytes(data, 'little')
    def mix(data, final=False):
        nonlocal a, b, c, seed
        s7 = int_from_bytes(data[12:16])
        if final:
            s7 = uint32(s7 << 8)
        s0 = uint32(a + int_from_bytes(data[0:4]) + s7 + seed)
        if final:
            s0 = uint32(s0 + len_)
        s1 = s0 ^ s0>>7
        s2 = uint32(b + int_from_bytes(data[4:8]) + s1)
        s3 = uint32(s2 ^ s2<<0xd)
        s4 = uint32(c + int_from_bytes(data[8:12]) + s3)
        s5 = s4 ^ s4>>0x11
        s0 = uint32(s0 + s5 + s7 + seed)
        if final:
            s0 = uint32(s0 + len_)
        s6 = uint32(s0 ^ s0<<9)
        s1 = uint32(s1 + s2 + s6)
        s2 = s1 ^ s1>>3
        s3 = uint32(s2 + s3 + s4)
        a = uint32(s2 + s3)
        s3 = uint32(s3 ^ s3<<7)
        s0 = uint32(s0 + s3 + s5)
        b = uint32(s0 + s3)
        s0 = uint32(s0 ^ s0>>0xf)
        s1 = uint32(s0 + s1 + s6)
        c = uint32(s0 + s1)
        seed = uint32(s1 ^ s1<<0xb)
    a = b = c = 0x9e3779b9
    len_ = len(data)
    while len(data) >= 16:
        mix(data)
        data = data[16:]
    mix(data, final=True)
    return seed % (max_bucket + 1)

--//我在自己的机器上测试失败,也许是python版本太低或者是自己不熟悉python的缘故,无法执行.如果仔细查看里面存在如下赋值语句:
--// a = b = c = 0x9e3779b9.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/82116601.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

app演唱会抢票全自动实现

抢票流程先去演唱会主页预选好场次、价格还有观演人,点击想看 (可选)手机后台杀掉大麦app任务 打开辅助app,给于对应权限 (可选)输入歌手名字,默认五月天 点击开抢按钮即可 如果点击开抢后,页面未开始自动跳转,可手动杀死大麦,再次切到辅助app点击开抢如果想终止辅助…

2023数据采集与融合技术实践作业一

作业1 实验要求 具体要求 用requests和BeautifulSoup库方法定向爬取给定网址的数据,屏幕打印爬取的大学排名信息。 输出信息排名 学校名称 省市 学校类型 总分1 清华大学 北京 综合 852.52...具体代码 import bs4 as bs import urllib.requesturl = "https://www.shangha…

shiro-721 CVE-2019-12422

漏洞描述Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。Shiro框架直观、易用,同时也能提供健壮的安全性。Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie。在服务端对rememberMe的c…

CentOS环境 nginx配置vue项目

nginx配置vue项目ps: 这里使用ruoyi-vue-plus项目举例,官网:https://plus-doc.dromara.org/ 一、配置不带应用路径的vue项目 1、打包。首先将vue项目生产配置文件的的应用访问路径设为/,然后命令行输入run run build:prod进行打包。2、导入环境。将打包文件(dist)拖入Cent…

2020ICPC区域赛南京站

2020ICPC区域赛南京站 K Co-prime Permutation 解题思路: 首先,根据样例2不难发现,\(k\)的下界为\(1\),因为1和排列中的任何数都会互质。 其次,我们考虑下上界大概是多少,也就是\(k = n\)是否一定合法。 假设,我们有一个初识排列\(p_i = i\).此时我们有\(1\)个元素和他的…

Odoo看板视图实践案例

看板视图是一个很常见的可视化解决方案了,例如:联系人卡片,任务卡片,还有二次元朋友们经常逛的哔站。 我个人也是非常喜欢看板视图,比起那些呆板的tree视图,看板视图给人的感觉的就是简洁直观又好看。 本人也是初学Odoo一个月,其中深意只知其一,但也想跟各位大佬分享交…