数组中元素的随机总和等于y - ruby​​ [重复]

     2023-03-31     255

关键词:

【中文标题】数组中元素的随机总和等于y - ruby​​ [重复]【英文标题】:Random sum of elements in an array equals to y - ruby [duplicate] 【发布时间】:2016-07-03 09:38:26 【问题描述】:

需要创建一个总和应该等于期望值的数组。

 inp = [1,2,3,4,5,6,7,8,9,10]
 sum = 200

输出:

out = [10,10,9,1,3,3,3,7,.....]  whose sum should be 200
or
out = [10,7,3,....]              Repeated values can be used
or
out = [2,3,4,9,2,....]

我试过了,

arr = [5,10,15,20,30]
ee = []
max = 200
while (ee.sum < max) do
  ee << arr.sample(1).first
end

ee.pop(2)
val = max - ee.sum
pair = arr.uniq.combination(2).detect  |a, b| a + b == val 
ee << pair
ee.flatten

有什么有效的方法吗。

【问题讨论】:

这是个好问题。到目前为止,您尝试过什么? @sagarpandya82,我已经添加了 @falsetru,这不是一个重复的问题。这里可以在输出中使用重复的值,这在任何问题中都不存在。从这个问题中删除重复的单词。 【参考方案1】:
inp = [1,2,3,4,5,6,7,8,9,10]
sum = 20

inp.length.downto(1).flat_map do |i|
  inp.combination(i).to_a # take all subarrays of length `i`
end.select do |a| 
  a.inject(:+) == sum     # select only those summing to `sum`
end

可能会采用结果数组的random 元素。

result = inp.length.downto(1).flat_map do |i|
  inp.combination(i).to_a # take all subarrays of length `i`
end.select do |a| 
  a.inject(:+) == sum     # select only those summing to `sum`
end
puts result.length
#⇒ 31
puts result.sample
#⇒ [2, 4, 5, 9]
puts result.sample
#⇒ [1, 2, 3, 6, 8]
...

请注意,这种方法对于长输入来说效率不高。同样,如果任何原始数组的成员可能被多次取走,则上面的combination 应更改为permutation,但此方案与permutation 一起使用效率太低。

【讨论】:

谢谢,一个小小的想法,即使目标是 2000 也应该可以工作 可以使用数组中的重复元素。【参考方案2】:

我在以下链接中找到了这个问题的答案:

Finding all possible combinations of numbers to reach a given sum

def subset_sum(numbers, target, partial=[])
 s = partial.inject 0, :+
 #check if the partial sum is equals to target
 puts "sum(#partial)=#target" if s == target
 return if s >= target  #if we reach the number why bother to continue
 (0..(numbers.length - 1)).each do |i|
   n = numbers[i]
   remaining = numbers.drop(i+1)
   subset_sum(remaining, target, partial + [n])
 end
end

subset_sum([1,2,3,4,5,6,7,8,9,10],20)

【讨论】:

谢谢,一个小小的想法,即使目标是 2000 也应该可以工作 可以使用数组中的重复元素。

在 C# 中,如何在数组中存储随机数等于某些总和的次数?

】在C#中,如何在数组中存储随机数等于某些总和的次数?【英文标题】:InC#,howdoIstoretheamountoftimesrandomnumbersequalcertainsumsinanarray?【发布时间】:2020-08-0600:52:59【问题描述】:我正在编写一个程序,可以按照用户的指定掷_数量的_... 查看详情

c_cpp检查数组中是否存在两个元素,其总和等于数组其余部分的总和(代码片段)

查看详情

如何产生随机数,使它们的总和等于给定的数字?

】如何产生随机数,使它们的总和等于给定的数字?【英文标题】:Howtoproducerandomnumberssothattheirsumisequaltogivennumber?【发布时间】:2014-01-1500:39:57【问题描述】:我想产生X个随机数,每个随机数来自区间&lt;0;Y&gt;(给定Y作为... 查看详情

检查数组中两个不同数字的总和是不是等于变量数?

】检查数组中两个不同数字的总和是不是等于变量数?【英文标题】:Checkifthesumoftwodifferentnumbersinanarrayequalavariablenumber?检查数组中两个不同数字的总和是否等于变量数?【发布时间】:2014-06-2715:50:34【问题描述】:在Ruby中,我... 查看详情

在数组中查找总和等于给定数字 X 的四个元素 [关闭]

】在数组中查找总和等于给定数字X的四个元素[关闭]【英文标题】:findfourelementsinarraywhosesumequaltoagivennumberX[closed]【发布时间】:2010-08-2519:27:12【问题描述】:我需要帮助来找到一种算法:数组中有四个元素其和等于给定数X在O(n... 查看详情

查找等于给定总和的数组元素[关闭]

】查找等于给定总和的数组元素[关闭]【英文标题】:Findarrayelementsequaltoagivensum[closed]【发布时间】:2012-03-0905:25:06【问题描述】:假设数组是:[1,2,5,7,10,13,17,21],你必须找到5个和等于31的数字。算法是什么?【问题讨论】:嗯... 查看详情

使用每一行的二维数组中小于或等于 k ​​的最大可能总和

】使用每一行的二维数组中小于或等于k​​的最大可能总和【英文标题】:Maximumpossiblesumlessthanorequaltokina2Darrayusingeachrow【发布时间】:2015-10-1212:38:28【问题描述】:给定:一个二维数组,值K和M问题:使用恰好M个元素,使用所... 查看详情

大型数组中元素的并行总和

】大型数组中元素的并行总和【英文标题】:ParallelsumofelementsinalargeArray【发布时间】:2013-04-2906:21:58【问题描述】:我有一个程序可以对一个非常大的数组中的元素求和。我想并行化这个总和。#defineN=some_very_large_no;//say1e12floatx[... 查看详情

是否可以对数组中的每 3 个相邻元素求和,并使用向量指令使它们中的每一个都等于总和?

】是否可以对数组中的每3个相邻元素求和,并使用向量指令使它们中的每一个都等于总和?【英文标题】:Isitpossibletosumevery3neighbouringelementsinanarrayandmakeeachofthemequaltothesumusingvectorinstructions?【发布时间】:2019-01-2110:05:24【问题描... 查看详情

计算组合的有效算法,数组的重复加起来等于给定的总和

】计算组合的有效算法,数组的重复加起来等于给定的总和【英文标题】:Efficientalgorithmtocomputecombinationswithrepetitionsofanarrayaddinguptogivensum【发布时间】:2020-06-1922:25:26【问题描述】:所以在个人C++项目中,我遇到了一个问题。我... 查看详情

获取数组中元素的最大值最小值平均值总和(代码片段)

...importjavax.sound.midi.Soundbank;45/*6*题目:定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,7*然后求出所有元素的最大值,最小值,和值,平均值,并输出。8*备注:所有随机数都是两位数9*10*Math.random()可以生成一个dou... 查看详情

在 Ruby 中查找数组的相似元素作为哈希值

】在Ruby中查找数组的相似元素作为哈希值【英文标题】:FindingsimilarelementsofanarrayasavalueofahashinRuby【发布时间】:2014-12-1814:40:23【问题描述】:假设我有以下哈希:hash="One"=>[1,2,3,4],"Two"=>[1,5,6,7],"Three"=>[1,8,9,10]我想创建一个... 查看详情

从数组中选择一个随机元素

】从数组中选择一个随机元素【英文标题】:Pickarandomelementfromanarray【发布时间】:2014-07-2301:58:02【问题描述】:假设我有一个数组,我想随机选择一个元素。最简单的方法是什么?显而易见的方法是array[randomindex]。但也许有像r... 查看详情

如何确保方法返回一个数组,即使 Ruby 中只有一个元素

】如何确保方法返回一个数组,即使Ruby中只有一个元素【英文标题】:Howtomakesureamethodreturnsanarray,evenwhenthereisonlyoneelementinRuby【发布时间】:2011-01-2912:33:21【问题描述】:我有一个Ruby方法,它搜索哈希数组并返回该数组的子集。... 查看详情

最大连续子数组(元素数量最多)

】最大连续子数组(元素数量最多)【英文标题】:Maximumcontiguoussub-array(Withmostnumberofelements)【发布时间】:2013-03-0417:02:45【问题描述】:给定一个自然数数组和一个自然数T,如何找到总和小于或等于T但该子数组中元素个数最大... 查看详情

给定数组的每个子集的最大和最小元素的按位或总和

】给定数组的每个子集的最大和最小元素的按位或总和【英文标题】:SumofbitwiseORofmaxandminelementofeverysubsetsofgivenarray【发布时间】:2018-10-3110:27:34【问题描述】:给定一个数组,我必须找到给定数组的大小大于或等于2的所有可能... 查看详情

随机获取数组元素和数组元素随机排序

<scripttype="text/javascript">//随机取得数组中的一个元素functionRand(){ vararr=[11,22,33,44]; vara=Math.floor(Math.random()*arr.length);//Math.floor(Math.random());//Math.floor()方法执行的是向下取整计算,它返回的是小于或等于函数参数, 查看详情

如何计算密度直方图中的高度(它们的总和不等于 1)?

】如何计算密度直方图中的高度(它们的总和不等于1)?【英文标题】:Howaretheheightsinadensityhistogramcalculated(theydon\'tsumupto1)?【发布时间】:2022-01-2109:14:39【问题描述】:我想通过绘制distplot来可视化数据。我有下面的python代码,... 查看详情