颤振:如何强制随机生成的值高于第二个飞镖



所以我有这个函数,系统为算术测验应用程序生成随机数。加法和乘法完美结合。但由于它适用于5岁至10岁的孩子,我不希望减法产生否定答案,而除法需要产生整数。目前,减法产生的数字比给出否定答案的第二个数字低。请帮助了解如何强制随机生成的数字高于第二个值。

List<dynamic> questions = [];
List<dynamic> answers = [];
bool isMarked = false;
List<List<dynamic>> mcq = [];
List<dynamic> userAnswer = [];
List<dynamic> ansData = [];
List<dynamic> ans = [];
var j = 0;
final CountDownController _controller = CountDownController();
@override
void initState() {
super.initState();
for (var i = 1; i < int.parse(widget.numOfQuestions) + 1; i++) {
ans = [];
final val1 = Random().nextInt(int.parse(widget.range1)) + 1;
final val2 = Random().nextInt(int.parse(widget.range2)) + 1;
if (widget.operator == 'sum') {
questions.add('$val1  +  $val2 =  ? ');
answers.add(val1 + val2);
ansData = [
val1 + val2,
val1 + val2 + Random().nextInt(10) + 1,
val1 + val2 - Random().nextInt(10) - 1,
val1 + val2 + Random().nextInt(16) + 1,
];
} else if (widget.operator == 'minus') {
questions.add('$val1  -  $val2 =  ? ');
answers.add(val1 - val2);
ansData = [
val1 - val2,
val1 - val2 + Random().nextInt(10) + 1,
val1 - val2 - Random().nextInt(10) - 1,
val1 - val2 + Random().nextInt(16) + 1,
];
} else if (widget.operator == 'multiplication') {
questions.add('$val1  *  $val2 =  ? ');
answers.add(val1 * val2);
ansData = [
val1 * val2,
val1 * val2 + Random().nextInt(10) + 1,
val1 * val2 - Random().nextInt(10) - 1,
val1 * val2 + Random().nextInt(20) + 1,
];
} else {
questions.add('$val1  /  $val2 =  ? ');
answers.add((val1 / val2).toStringAsFixed(2));
ansData = [
(val1 / val2).toStringAsFixed(2),
(val1 / val2 + Random().nextInt(10) + 1).toStringAsFixed(2),
(val1 / val2 - Random().nextInt(10) - 1).toStringAsFixed(2),
(val1 / val2 + Random().nextInt(16) + 1).toStringAsFixed(2),
];
}
for (var j = 0; j < 4; j++) {
final rNum = Random().nextInt(ansData.length).round();
ans.add(ansData[rNum]);
ansData.removeAt(rNum);
}
mcq.add(ans);
}
}

您可以进行

final val2 = val1 + Random().nextInt(int.parse(widget.range2) - val1) + 1;

相关内容

最新更新