【问题标题】:I have an array of objects. I want to randomly output objects whose sum of values ​is equal to eight我有一个对象数组。我想随机输出值总和等于八的对象
【发布时间】:2020-12-03 04:38:40
【问题描述】:
    
const obj = 
    [
        {noir: 1},
        {croch: 0.5},
        {doubleCroch: 1},
        {triollet: 1.5},
        {quatreDouble: 2} 

    
];


所需的输出示例:

2、2、0.5、0.5、1、2

 for (var i = 0 ; i < obj.length ; i++ ){
        var randomItem = obj[Math.floor(Math.random()*obj.length )];
        
    }


这给我带来了五个随机项目。但是我想要元素之和等于8的元素。

看起来像是随机里面的一个条件

【问题讨论】:

    标签: javascript arrays random sum conditional-statements


    【解决方案1】:

    我认为您在这里有几个选择:

    1。万无一失的方法

    您计算并收集总和为 8 的所有可能组合。然后随机选择一种组合。这可能在计算上很昂贵,特别是因为您似乎允许重复。实施起来并不简单。

    2。随遇而安的方法

    你在做的时候不断地从你的对象中随机挑选元素并跟踪总和。如果总和达到 8,则您有一个获胜组合。如果超过 8,则从头开始。更容易实现,但理论上可能会无限运行。

    3。过度设计的方法

    开始时与前一种方法相同,但如果总和超过 8,则丢弃最后选择的元素并选择另一个。这将要求您跟踪您已经为每个选择的元素尝试过的所有元素,因为您可能需要比最后一个选择的元素回溯更远。这将是最难实现的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 2018-02-18
      • 2015-10-22
      • 2022-06-10
      • 1970-01-01
      • 2021-09-12
      相关资源
      最近更新 更多