I'm writing a script to compute the numbers of vectors with a given property.
I would like it to work is as the following does, so adding a vector to the set at every cycle
T=[]
for j in GF(8):
c=(j)
T.append(j)
print(T)
That gives the following output
[0]
[0, z3]
[0, z3, z3^2]
[0, z3, z3^2, z3 + 1]
[0, z3, z3^2, z3 + 1, z3^2 + z3]
[0, z3, z3^2, z3 + 1, z3^2 + z3, z3^2 + z3 + 1]
[0, z3, z3^2, z3 + 1, z3^2 + z3, z3^2 + z3 + 1, z3^2 + 1]
[0, z3, z3^2, z3 + 1, z3^2 + z3, z3^2 + z3 + 1, z3^2 + 1, 1]
(the print line only porpouse is to show you how I want my set to by build).
However the actual code does this:
T=[]
for j in GF(8):
b=random_matrix(GF(8),1,3)
b[0,0]=j
T.append(b)
print(T)
[[ 0 z3^2 z3^2 z3 + 1]]
[[ z3 z3^2 z3^2 z3 + 1], [ z3 z3^2 z3^2 z3 + 1]]
[[ z3^2 z3^2 z3^2 z3 + 1], [ z3^2 z3^2 z3^2 z3 + 1], [ z3^2 z3^2 z3^2 z3 + 1]]
[[z3 + 1 z3^2 z3^2 z3 + 1], [z3 + 1 z3^2 z3^2 z3 + 1], [z3 + 1 z3^2 z3^2 z3 + 1], [z3 + 1 z3^2 z3^2 z3 + 1]]
[[z3^2 + z3 z3^2 z3^2 z3 + 1], [z3^2 + z3 z3^2 z3^2 z3 + 1], [z3^2 + z3 z3^2 z3^2 z3 + 1], [z3^2 + z3 z3^2 z3^2 z3 + 1], [z3^2 + z3 z3^2 z3^2 z3 + 1]]
[[z3^2 + z3 + 1 z3^2 z3^2 z3 + 1], [z3^2 + z3 + 1 z3^2 z3^2 z3 + 1], [z3^2 + z3 + 1 z3^2 z3^2 z3 + 1], [z3^2 + z3 + 1 z3^2 z3^2 z3 + 1], [z3^2 + z3 + 1 z3^2 z3^2 z3 + 1], [z3^2 + z3 + 1 z3^2 z3^2 z3 + 1]]
[[z3^2 + 1 z3^2 z3^2 z3 + 1], [z3^2 + 1 z3^2 z3^2 z3 + 1], [z3^2 + 1 z3^2 z3^2 z3 + 1], [z3^2 + 1 z3^2 z3^2 z3 + 1], [z3^2 + 1 z3^2 z3^2 z3 + 1], [z3^2 + 1 z3^2 z3^2 z3 + 1], [z3^2 + 1 z3^2 z3^2 z3 + 1]]
[[ 1 z3^2 z3^2 z3 + 1], [ 1 z3^2 z3^2 z3 + 1], [ 1 z3^2 z3^2 z3 + 1], [ 1 z3^2 z3^2 z3 + 1], [ 1 z3^2 z3^2 z3 + 1], [ 1 z3^2 z3^2 z3 + 1], [ 1 z3^2 z3^2 z3 + 1], [ 1 z3^2 z3^2 z3 + 1]]
So intead of adding the new vector it turns the set into a copy of several vectors all equal to the new one.
What's the problem in my code? And how can I solve it?