使用Python中的列表进行统计计算

时间:2015-09-07 00:54:38

标签: python types

我使用Python来实现以下等式:

  

S [n + 1] =(k * S [n])MOD m变量的值为:S [0] = 1111   k = 16807 m = 2147483647我计算了10000个值(所以S [0]为   S [9999])。

我正在使用列表来计算和追加值。 这就是我在做的事情:

# Respective values of k, m and Seed value S[0] in sList
k = 16807
m = 2147483647
sList = [1111]

# Populating the list/array for 10000 iterations
while len(sList) < 10000:
   Sn = (k * sList[-1]) % m
   sList.append(Sn)
print (sList)

虽然代码适用于较小的k和m值,但我得到的结果不正确S [2]。 我手动计算S [2] = 1417880224,但我的代码生成S [2] = 297389177。

这是否发生是因为我试图在列表中追加的数字超出了某个范围?我是否需要键入强制转换为不同的数据类型(如double)? 我哪里错了?

1 个答案:

答案 0 :(得分:3)

让我们使用您的定义calculator

手动完成
>>> 1111
1111
>>> (16807 * 1111) % 2147483647
18672577
>>> (16807 * 18672577) % 2147483647
297389177

这些与您的代码产生的结果相同。

所以,看起来你手工计算或你提供的递归公式是错误的。