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

这是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的彩虹表中,找到明文密码的成功概率。在

示例运行:

^{pr2}$

返回0.6055。在

我很难将它转换成Python。在python3中,不再有max integer,因此N不是问题。我想在计算中,我不得不把所有的东西都强制到一个大的浮点数上,但我不确定。在

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

创建大小为[1。。10] 所以十个元素

用零初始化该数组的每个元素

在基于零的索引中,我认为这应该是array[0 .. t-1],看起来MATLAB使用1作为第一个(0'th)索引。在

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

对于数组中的每个元素,pos=1(基于0的索引)到t-1:array[pos] = N * (1 - (1 - 1/N) ** ar

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值