Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
| Download
Views: 1794
Image: ubuntu2004
1
load("__common__.sage")
2
3
def generator():
4
det = randrange(2,8)*choice([-1,1])
5
rowOps=[]
6
dets=[]
7
# random row scaling
8
row = randrange(0,4)
9
scale = randrange(2,6)*choice([-1,1])
10
rowOps.append(rowOp("diagonal",row+1,row+1,scale))
11
dets.append(det*scale)
12
# random row swapping
13
rows = sample([0,1,2,3],2)
14
shuffle(rows)
15
rowOps.append(rowOp("permutation",rows[0]+1, rows[1]+1))
16
dets.append(det*(-1))
17
# random row adding
18
rows = sample([0,1,2,3],2)
19
shuffle(rows)
20
scale = randrange(2,6)*choice([-1,1])
21
rowOps.append(rowOp("elementary",rows[0]+1,rows[1]+1,scale))
22
dets.append(det)
23
24
#choose two random ops
25
ops = sample([0,1,2],3)
26
shuffle(ops)
27
row_op1 = rowOps[ops[0]]
28
det1 = dets[ops[0]]
29
row_op2 = rowOps[ops[1]]
30
det2 = dets[ops[1]]
31
row_op3 = rowOps[ops[2]]
32
det3 = dets[ops[2]]
33
34
35
name1, name2, name3 = sample(["B","C","M","N","P","Q"],3)
36
37
#randomly swap order of ops
38
swapped = choice([True,False])
39
40
41
return {
42
"determinant": det,
43
"row_op1": row_op1,
44
"row_op2": row_op2,
45
"row_op3": row_op3,
46
"name1": name1,
47
"name2": name2,
48
"name3": name3,
49
"det1": det1,
50
"det2": det2,
51
"det3": det3
52
}
53
54