设为首页 加入收藏

TOP

[20230919]黄金分隔法0.618.txt(一)
2023-09-23 15:44:07 】 浏览:185
Tags:20230919 黄金分 0.618.txt
[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
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇shell批量执行命令与文件传输脚本 下一篇Linux下jdk配置

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目