Sujet : Re: 100 Random Single Variable Linear Equations
De : porkchop (at) *nospam* invalid.foo (Mike Sanders)
Groupes : comp.lang.awkDate : 08. Dec 2024, 07:06:59
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vj3d23$3kkn4$1@dont-email.me>
References : 1
User-Agent : tin/2.6.2-20221225 ("Pittyvaich") (NetBSD/9.3 (amd64))
Mike Sanders <
porkchop@invalid.foo> wrote:
# outputs 100 random single variable linear equations in the form: ax+b=c
now randomly creates up to 2 instances of 'x' per equation & 3 random forms...
ax op1 b = c
ax op1 bx = c
ax op1 b op2 x = c
(really more than 3 if there's a leading negtive)
and unless there's something out of whack, i'm using this version, because
algebra can melt my brain as it increases in complexity...
BEGIN {
# seed random number generator
if (SEED+0 != SEED) SEED = 1; srand(SEED)
# keep generating until we have exactly 100 unique equations
do {
a = rnd(1, 20) # random value for coefficient x
b = rnd(1, 99) # random value for b constant
c = rnd(1, 99) # random value for c constant
n = (rnd(1, 2) == 1) ? "-" : "" # random negative for coefficient x
f = rnd(1, 3) # random equation form
op1 = rop() # random operator
if (f == 1) {
# simple equation: ax op1 b = c
e = sprintf("%s%dx %s %d = %d", n, a, op1, b, c)
} else if (f == 2) {
# medium complexity: ax op1 bx = c
b2 = rnd(1, 20) # new/different coefficient for 2nd x
op2 = rop() # 2nd random operator
e = sprintf("%s%dx %s %dx = %d", n, a, op1, b2, op2, c)
} else if (f == 3) {
# more complex: ax op1 b op2 x = c
op2 = rop() # 2nd random operator
e = sprintf("%s%dx %s %d %s x = %d", n, a, op1, b, op2, c)
}
# store equation in array if it doesn't already exist
if (!(e in equ)) {
equ[e] = 1 # mark element as reserved
u++ # increment u for each unique equation
}
} while (u < 100)
# print seed & equations
printf("SEED: %d\n\n", SEED)
for (j in equ) printf("%03d. %s\n", ++i, j)
}
function rop() { return substr("+-*/", rnd(1, 4), 1) }
function rnd(min, max) { return int(rand() * (max - min + 1)) + min }
# eof
-- :wqMike Sanders