ADD_X_RANGE = (1..20) #第一个加数的范围
ADD_Y_RANGE = (1..20) #第二个加数的范围
ADD_RES_MAX = 20 #加法和最大值
ADD_RES_MIN = 10 #加法和最小值
ADD_FORMULA_CNTS = 50 #加法算式总的个数
DEC_X_RANGE = (10..20) #第一个减数的范围
DEC_Y_RANGE = (1..20) #第二个减数的范围
DEC_FORMULA_CNTS = 50 #减法算式总的个数
LINE_CNTS = 5 #每行算式个数
res = {}
while res.size < ADD_FORMULA_CNTS do
x = rand(ADD_X_RANGE)
y = rand(ADD_Y_RANGE)
if (x+y) <= ADD_RES_MAX && (x+y) > ADD_RES_MIN
key = sprintf("%d+%d", x, y)
str = sprintf("%-2d + %-2d = ", x, y)
res[key] = str
end
end
while res.size < (DEC_FORMULA_CNTS + ADD_FORMULA_CNTS) do
x = rand(DEC_X_RANGE)
y = rand(DEC_Y_RANGE)
if (x-y) > 0
key = sprintf("%d-%d", x, y)
str = sprintf("%-2d - %-2d = ", x, y)
res[key] = str
end
end
out_tab = res.to_a
line = 0
out = {}
out_size = 0
while out_size < 100 do
i = rand(0..99)
out[i] = i
if out_size != out.size
printf(out_tab[i][1])
line = line + 1
if line == LINE_CNTS
puts ""
puts ""
line = 0
end
out_size = out.size
end
end