matlab和python转换_将MATLAB代码转换为Python:Python类型和操作顺序

本文详细介绍了如何将MATLAB代码转换为Python,特别是涉及指数运算和数组操作的部分。通过分析MATLAB函数`calc_success_probability`,解释了Python中运算顺序的误解,提供了一个修正后的Python实现,用于计算彩虹表环境下找到明文密码的成功概率。
摘要由CSDN通过智能技术生成

这是RainbowCrack作者的MATLAB函数:

function ret = calc_success_probability(N, t, m)

arr = zeros(1, t - 1);

arr(1) = m;

for i = 2 : t - 1

arr(i) = N * (1 - (1 - 1 / N) ^ arr(i - 1));

end

exp = 0;

for i = 1 : t - 1

exp = exp + arr(i);

end

ret = 1 - (1 - 1 / N) ^ exp;

在给定具有键空间N,大无符号整数,长度链t和链数的彩虹表的情况下,它计算找到明文密码成功的概率m。

运行示例:

calc_success_probability(80603140212, 2400, 40000000)

返回0.6055。

我很难将其转换为Python。在Python 3中,不再有最大整数,所以N这不是问题。我认为在计算中,我必须将所有内容强制设置为较大的浮点数,但我不确定。

我也不知道MATLAB中的运算顺序。我认为代码是这样说的:

创建大小为[1 .. 10]的数组,以便十个元素用零初始化该数组的每个元素

在基于零的索引中,我认为这是array[0 .. t-1],就像MATLAB使用1作为第一个(第0个)索引一样。

然后将数组的第二个元素(基于0的索引)初始化为m。

对于数组中的每个元素,pos=1(从0开始的索引)为t

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值