现在有一组微信号轮显:abc123,bcd245,cbd345,dfg456,aaa555,bbb666
分时段显示,比如9-12点是abc123,bcd245,cbd345,13-15点是bcd245,cbd345,dfg456,aaa555,16-18点是abc123,bcd245,cbd345,dfg456,aaa555,bbb666
再就是可否给每一个号设置一个权重,比如权重值高的展现的更多一些,权重低的展现少些,正常是2分钟换一个?其他的就不按顺序随机轮换。(可否将权重最高值设为9,最低1)
已解决
悬赏分:10
- 解决时间 2022-01-05 00:42
点赞 0反对 0举报 0
收藏 0
分享 1
回答3
最佳
-
function createRandomItemFun(items) { const unit = items.reduce((res, v) => res + v.level, 0); const avg = 100 / unit; const nums = items.reduce((res, v, i) => { res.push( (res[i-1] || 0) + avg * v.level); return res; }, []); return function getRandomItem() { const value = Math.random() * 100; return items[ nums.findIndex(v => v >= value) ]; } } function test(items) { var getRandomItem = createRandomItemFun(items) // 统计输出次数 for(let i = 0; i<100;i++) { var item = getRandomItem(); item.count = (item.count||0)+1; } console.log(items) } test([ {name: '1', level: 1}, {name: '2', level: 1}, {name: '3', level: 1}, {name: '4', level: 1}, ]) test([ {name: '1', level: 1}, {name: '2', level: 1}, {name: '3', level: 4}, {name: '4', level: 4}, ]) test([ {name: '1', level: 1}, {name: '2', level: 1}, {name: '3', level: 1}, {name: '4', level: 7}, ])
支持 0 反对 0 举报2022-01-04 07:28
-
首先说一下,你这个轮显的规则很迷呀。。。
举个例子吧。号码池有六个号,等额分三份。(微信等额红包)
- 9-12 随机选择两个
- 13-15 随机选择两个
- 13-15 显示剩下的
如果是,号码池有六个号,随机分三份。(微信随机红包)
- 9-12 随机选择1-2个
- 13-15 随机选择1-3个
- 13-15 显示剩下的
然后就是你说的权重问题。既然有权重,那么还随机?
当然也不是不能做啊,比如1号的权重是2,其他的都是1,那么我可以认为我的号码池有七个号码,只不过选中了1号会一次消失两个号码。支持 0 反对 0 举报2022-01-04 08:25