【问题标题】:selecting an element randomly from the array all combination从数组所有组合中随机选择一个元素
【发布时间】:2014-01-22 03:36:04
【问题描述】:

我通过 matlab 代码随机选择了一个数组的元素。我从 array(1,64) 中选择了 8 个元素。现在,我想创建所有组合。示例 array=[1 2 3 4 ... 64] 我随机选择了 8 个元素 new=[1 2 3 4 5 6 7 8 ] new=[1 2 3 4 5 6 7 9 ]... new 是所有组合。如何创建所有组合?对于matlab代码

【问题讨论】:

  • 呃,呃,你是怎么随机选择这8个元素的?
  • array=[1 2 3 ... 64];msize = numel(array); idx = randperm(msize); rndmarray=array(idx(1:8)); final=sort(rndmarray) @SamB 这就是我随机选择 8 个元素的方式

标签: arrays matlab


【解决方案1】:

假设顺序不重要(即[1 2 3 4 5 6 7 8]不计为不同的组合[1 2 3 4 5 6 8 7]),使用

combinations = nchoosek(1:64,8);

但这可能需要很多时间和内存。

例如,

>> combinations = nchoosek(1:5,3)

给予

combinations =

     1     2     3
     1     2     4
     1     2     5
     1     3     4
     1     3     5
     1     4     5
     2     3     4
     2     3     5
     2     4     5
     3     4     5

仅随机生成其中一种组合,而无需事先计算它们:

combination = sort(randsample(1:64,8));

【讨论】:

  • 感谢@Luis Mendo 对这个问题感兴趣。我们可以通过遗传算法来做到这一点。因为我在 matlab 中有一个繁忙的站点,组合 = sort(randsample(1:64,8))
  • @user3210485 我不太喜欢遗传算法,抱歉
  • @user3210485 欢迎!
猜你喜欢
  • 2014-07-23
  • 1970-01-01
  • 2017-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-04
相关资源
最近更新 更多