如何解决一个整数的随机数学方程式
我正在尝试做一些创建与预定义变量相等的随机算术方程的操作。例如:
sNum = 10
# Do something here
fNum = 3 * 2 - 3 + 7
fNum == sNum
True
我已经尝试过考虑如何做到这一点,但是还没有运气。
约束:
- 仅基本运算符:
*
,+
,-
,/
- 只要等式中的数字数为
>4
和<10
,就可以执行任意数量的操作
有什么想法吗?
解决方法
import numpy as np
import random
sNum = 10
#Generate a database by randomly sampling the formulas space,save result into formula_result_dict:
formula_result_dict = {}
for m in range(100000):
rand_len = np.random.randint(6) + 4
op_pool = ['/','+','-','*']
numbers = np.random.randint(1,100,rand_len) #Determine your range,here it's [1,99].
rand_ops = random.choices(op_pool,k=rand_len-1)
str_to_eval = ''.join([str(numbers[k//2]) if k%2==0 else rand_ops[k//2] for k in range(rand_len-1+rand_len)])
evaluated = eval(str_to_eval)
if formula_result_dict.get(evaluated) is None:
formula_result_dict[evaluated] = [str_to_eval]
else:
formula_result_dict[evaluated].append(str_to_eval)
#Now,let's say we want to generate a random formula,just pick a random formula from the relevant key:
formula = random.choice(formula_result_dict[sNum])
print(formula)
sNum == eval(formula)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。