如何获得在不获取JavaScript中重复值的情况下改组数组的概率

薄荷

在javascript中,我有点困惑,如何获得将对象改组为数组的实际和准确的概率。例如

var numberOfOrder=[
  {
    id:1 
  },
  {
    id:2 
  },
  {
    id:3 
  }
]

通过上面的示例,可以通过查找阶乘numberOfOrder.length;来以6种方式操纵上述对象。

但是,将对象随机排列在数组中的实际方法是什么。

我的尝试

function newShuffle(value) {
    for(var i = value.length-1;i >=0; i--){
        var randomIndex = Math.floor(Math.random()*(i+1));
        var itemAtIndex = value[randomIndex];

        value[randomIndex] = value[i];
        value[i] = itemAtIndex
    }
    return value
}

但是,如果我运行该函数6次返回重复值,则上述函数将不会返回准确值

正确的功能是什么

安德烈·库兹敏斯(Andrejs Kuzmins)

您必须了解概率和排列之间的区别。第二个术语来自组合语。有一些算法可以获取数组项的所有可能排列。这是其中之一:

function permutations(items) {
    // single item array - no permutations available
    if (items.length == 1) return [items];
    var combos = [];
    for (var i = 0; i < items.length; i++) {
        // first - the current item, rest - array without the current item
    	var first = items[i], rest = items.slice(0);
        rest.splice(i, 1);
        // getting permutations of shorter array and for each of them...
        permutations(rest).forEach(function(combo){
            // prepend the current item
            combo.unshift(first);
            // save the permutation
            combos.push(combo);
        });
    }
    return combos;
}

alert(permutations([ 1, 2, 3 ]).join("\n"));

更新

递归算法在上面实现。该函数permutations获取一个数组,并为每个项目递归获取从当前项目开始的所有排列。在递归的每个步骤中,数组都缩短一个项目(减去当前项目),而在最后一步,由于无法再使用置换,因此不处理单个元素数组。

还向代码添加了一些注释。

最后一行只是测试,以获取数组的所有排列[1, 2, 3]并通过显示它们alert为了获得更好的说明性视图,所有找到的排列都用换行符号(.join("\n")粘贴

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在不连续重复 Javascript 中的两个特定属性的情况下对对象数组进行排序?

来自分类Dev

如何在不获取空值到输出数组的情况下拆分字符串

来自分类Dev

如何在不循环的情况下从函数参数中指定的json数组中获取密钥?

来自分类Dev

如何仅在rethinkDB中不包含值的情况下追加到数组

来自分类Dev

如何在不循环的情况下访问对象数组中的所有键和值

来自分类Dev

如何仅在rethinkDB中不包含值的情况下追加到数组

来自分类Dev

如何在不更改组件状态的情况下更改组件状态的副本?

来自分类Dev

如何在不更改原始数组的情况下从时间复杂度为O(n)或更佳的排序数组中获取唯一值

来自分类Dev

如何在没有任何循环语句的情况下获取数组中多个文件的值

来自分类Dev

在Microsoft Excel中,如何在没有额外列的情况下获取vlookup值数组?

来自分类Dev

如何在Python分布中给定样本列表的情况下计算值的概率?

来自分类Dev

在JavaScript中,如何在没有for循环的情况下计算对象数组中的值差?

来自分类Dev

如何在不更改容器的情况下更改数组值(在对象数组内部)?javascript

来自分类Dev

如何在不循环整个数组的情况下从二维数组中获取元素?

来自分类Dev

如何在不指定Ruby中单个值的情况下获取哈希中的所有值?

来自分类Dev

在不更改原始值的情况下,如何选择记录直到获得一个值?

来自分类Dev

如何在给定数组中关联表的任何值的情况下获得表中的所有记录?

来自分类Dev

如何在不循环的情况下使用现有数组值中的动态键映射新数组?

来自分类Dev

在React中,如何在不映射整个对象的情况下获取数据并在状态数组中呈现单个对象?

来自分类Dev

如何在不排序的情况下删除vi中不连续的重复行?

来自分类Dev

在不更改元素顺序的情况下删除数组中的重复项

来自分类Dev

如何在不直接引用数组名称的情况下从json数组获取数据

来自分类Dev

如何在不更改现有json数组值的情况下克隆json数组

来自分类Dev

如何在不重复节点MySQL中的密钥的情况下获得完整的JSON?

来自分类Dev

如何在不重复数组的情况下仅获取1个参数

来自分类Dev

在不重复问题的情况下获取数组中的随机问题

来自分类Dev

如何在不存储重复值的情况下对最近邻的numpy数组进行上采样?

来自分类Dev

我如何在不渲染的情况下从ERB代码块中获得收益?

来自分类Dev

在Java中如何在不返回实例或数据副本的情况下获得对属性的访问?

Related 相关文章

  1. 1

    如何在不连续重复 Javascript 中的两个特定属性的情况下对对象数组进行排序?

  2. 2

    如何在不获取空值到输出数组的情况下拆分字符串

  3. 3

    如何在不循环的情况下从函数参数中指定的json数组中获取密钥?

  4. 4

    如何仅在rethinkDB中不包含值的情况下追加到数组

  5. 5

    如何在不循环的情况下访问对象数组中的所有键和值

  6. 6

    如何仅在rethinkDB中不包含值的情况下追加到数组

  7. 7

    如何在不更改组件状态的情况下更改组件状态的副本?

  8. 8

    如何在不更改原始数组的情况下从时间复杂度为O(n)或更佳的排序数组中获取唯一值

  9. 9

    如何在没有任何循环语句的情况下获取数组中多个文件的值

  10. 10

    在Microsoft Excel中,如何在没有额外列的情况下获取vlookup值数组?

  11. 11

    如何在Python分布中给定样本列表的情况下计算值的概率?

  12. 12

    在JavaScript中,如何在没有for循环的情况下计算对象数组中的值差?

  13. 13

    如何在不更改容器的情况下更改数组值(在对象数组内部)?javascript

  14. 14

    如何在不循环整个数组的情况下从二维数组中获取元素?

  15. 15

    如何在不指定Ruby中单个值的情况下获取哈希中的所有值?

  16. 16

    在不更改原始值的情况下,如何选择记录直到获得一个值?

  17. 17

    如何在给定数组中关联表的任何值的情况下获得表中的所有记录?

  18. 18

    如何在不循环的情况下使用现有数组值中的动态键映射新数组?

  19. 19

    在React中,如何在不映射整个对象的情况下获取数据并在状态数组中呈现单个对象?

  20. 20

    如何在不排序的情况下删除vi中不连续的重复行?

  21. 21

    在不更改元素顺序的情况下删除数组中的重复项

  22. 22

    如何在不直接引用数组名称的情况下从json数组获取数据

  23. 23

    如何在不更改现有json数组值的情况下克隆json数组

  24. 24

    如何在不重复节点MySQL中的密钥的情况下获得完整的JSON?

  25. 25

    如何在不重复数组的情况下仅获取1个参数

  26. 26

    在不重复问题的情况下获取数组中的随机问题

  27. 27

    如何在不存储重复值的情况下对最近邻的numpy数组进行上采样?

  28. 28

    我如何在不渲染的情况下从ERB代码块中获得收益?

  29. 29

    在Java中如何在不返回实例或数据副本的情况下获得对属性的访问?

热门标签

归档