javascript - 从数组中选择一个随机元素,重复直到满足条件
问题描述
我有以下问题:我有一个固定的总和 [30] 和数字数组。我的问题是如何从 sum 中减去 num 的随机数,直到得到其余数 >1、<2,如 1.09 或 1.05?
var num= [0.99, 1.99, 2.99, 3.99, 4.99, 5.99, 6.99, 7.99, 8.99, 9.99];
var sum= [30];
控制台.log()
[30]
[0.99,
1.99,
0.99,
4.99,
6.99,
1.99,
2.99,
4.99
2.99]
[1.09]
console.log(再次)
[30]
[7.99,
6.99,
4.99,
6.99,
1.99,
[1.05]
解决方案
您需要在这里使用0/1 背包动态规划。这是标准的背包问题。
假设,您正在尝试第一个数字。您可以从总和中减去此数字或忽略此数字。所以你会尝试所有的可能性。这种取/不取称为0/1背包。
您可以从此链接学习0/1背包: https ://www.geeksforgeeks.org/0-1-knapsack-problem-dp-10/
推荐阅读
- java - 图/graphComponent 的 JGraphX 新初始化无法按预期工作并导致伪影
- javascript - PHP和JS登录表单说用户不存在错误
- azure - 在 Dockerfile 中安装 Azure CLI 找不到包 azure-cli
- javascript - AngularJS - ng-repeat 中的目标特定元素
- node.js - 在 Node 中使用异步等待排队作业
- excel - 使用 PowerShell 打开带有参数的 Excel 文件
- java - 通过使用 Indy 将 Java 转换为 Delphi 的 HTTP POST
- javascript - 合并具有相似键的数组中的对象
- android - Dialogflow Google 助理崩溃
- awk - 仅在一个文件中为某些特定行从另一列中减去一列中的值