栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何有效地随机选择数组项而不重复?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何有效地随机选择数组项而不重复?

每当选择一项时,将其移至阵列的背面,然后从原始阵列的一部分中随机选择

array.slice(0, -5)

var a = ["Roger", "Russell", "Clyde", "Egbert", "Clare", "Bobbie", "Simon", "Elizabeth", "Ted", "Caroline"];var chooseName = function () {    var unique = true;    num = Math.floor(Math.random() * a.length - 5);    name = a.splice(num,1);    a.push(name);}window.addEventListener("keypress", function (e) {    var keypre = e.keyCode;    if (keypre == 13) {        chooseName();    }}, false);

编辑:这也有一个副作用,即不给任何出现在列表尾部的变量一个不公平的缺点,即在前N个调用中不会考虑它们。如果这对您来说是个问题,请尝试在某个位置保留一个静态变量,以跟踪要使用的切片的大小,并将其最大化为B(在这种情况下为5)。例如

var a = ["Roger", "Russell", "Clyde", "Egbert", "Clare", "Bobbie", "Simon", "Elizabeth", "Ted", "Caroline"];B = 5; //max size of 'cache'N = 0;var chooseName = function () {    var unique = true;    num = Math.floor(Math.random() * a.length - N);    N = Math.min(N + 1, B);    name = a.splice(num,1);    a.push(name);}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/575187.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号