# 转盘中奖，设置权重来设置中奖概率

Shane1994 2018-04-16 06:00:27

...全文
3350 13 打赏 收藏 转发到动态 举报

13 条回复

Shane1994 2018-04-19
• 打赏
• 举报

[quote=引用 11 楼 apollokk 的回复:] [quote=引用 8 楼 YIGOO4 的回复:] [quote=引用 5 楼 apollokk 的回复:]
``````    var Items = ['特', '一', '二', '三'], Weight = [1, 3, 5, 10], Jiang = [];
for (var i = 0, n = Weight.length; i < n; i++) {
for (var j = 0, c = Weight[i]; j < c; j++) {
Jiang.push(Items[i]);
}
}
function Run() {
if (Jiang.length == 0) {
return;
}
var rnd = Math.floor(Math.random() * Jiang.length);
var luck = Jiang.splice(rnd, 1);
//这里可以控制转盘转到某个指定位置才停下来
}
``````

Shane1994 2018-04-19
• 打赏
• 举报

[quote=引用 8 楼 YIGOO4 的回复:] [quote=引用 5 楼 apollokk 的回复:]
``````    var Items = ['特', '一', '二', '三'], Weight = [1, 3, 5, 10], Jiang = [];
for (var i = 0, n = Weight.length; i < n; i++) {
for (var j = 0, c = Weight[i]; j < c; j++) {
Jiang.push(Items[i]);
}
}
function Run() {
if (Jiang.length == 0) {
return;
}
var rnd = Math.floor(Math.random() * Jiang.length);
var luck = Jiang.splice(rnd, 1);
//这里可以控制转盘转到某个指定位置才停下来
}
``````

Shane1994 2018-04-18
• 打赏
• 举报

``````
var g = ["一等奖","二等奖","三等奖","未中奖"];
var p = [1,5,20,74];
var s = p.reduce(function(pv, v){
return pv+v;
},0);
var r = Math.random()*s;
for (var i=0, n=0; i < p.length; i++) {
n += p[i];
if (n>=r) break;
}
``````

Shane1994 2018-04-18
• 打赏
• 举报

``````    var Items = ['特', '一', '二', '三'], Weight = [1, 3, 5, 10], Jiang = [];
for (var i = 0, n = Weight.length; i < n; i++) {
for (var j = 0, c = Weight[i]; j < c; j++) {
Jiang.push(Items[i]);
}
}
function Run() {
if (Jiang.length == 0) {
return;
}
var rnd = Math.floor(Math.random() * Jiang.length);
var luck = Jiang.splice(rnd, 1);
//这里可以控制转盘转到某个指定位置才停下来
}
``````

Shane1994 2018-04-18
• 打赏
• 举报

Hello World, 2018-04-18
• 打赏
• 举报

[quote=引用 5 楼 apollokk 的回复:]
``````    var Items = ['特', '一', '二', '三'], Weight = [1, 3, 5, 10], Jiang = [];
for (var i = 0, n = Weight.length; i < n; i++) {
for (var j = 0, c = Weight[i]; j < c; j++) {
Jiang.push(Items[i]);
}
}
function Run() {
if (Jiang.length == 0) {
return;
}
var rnd = Math.floor(Math.random() * Jiang.length);
var luck = Jiang.splice(rnd, 1);
//这里可以控制转盘转到某个指定位置才停下来
}
``````

• 打赏
• 举报

[quote=引用 1 楼 jslang 的回复:]
``````
var g = ["一等奖","二等奖","三等奖","未中奖"];
var p = [1,5,20,74];
var s = p.reduce(function(pv, v){
return pv+v;
},0);
var r = Math.random()*s;
for (var i=0, n=0; i < p.length; i++) {
n += p[i];
if (n>=r) break;
}
``````

``````
<script type="text/javascript">
var g = ["一等奖","二等奖","三等奖","未中奖"];//奖项名称
var p = [1,5,20,74];//奖项的权重。也就是各个奖项的中奖几率占总数的比例。比如这个总数是100，二等奖的中奖几率就是5/100
var t = [1,2,4,0];//奖项个数、一等奖1个,二等奖2个,三等奖4个

function lottery() { //抽奖
var s = p.reduce(function(pv, v){//计算p数组中数值之和。1+5+20+74是100
return pv+v;
},0);
var r = Math.random()*s;
for (var i=0, n=0; i < p.length; i++) {
n += p[i];
if (n>r) break;
}
if (t[i]-->0) {
} else {
}
}
</script>
<input type="button" value="抽奖" onclick="lottery();" />
``````

• 打赏
• 举报

``````
var g = ["一等奖","二等奖","三等奖","未中奖"];//奖项名称
var p = [1,5,20,74];//奖项的权重。也就是各个奖项的中奖几率占总数的比例。比如这个总数是100，二等奖的中奖几率就是5/100
var s = p.reduce(function(pv, v){//计算p数组中数值之和。1+5+20+74是100
return pv+v;
},0);
var r = Math.random()*s;
for (var i=0, n=0; i < p.length; i++) {
n += p[i];
if (n>=r) break;
}

``````
Shane1994 2018-04-17
• 打赏
• 举报

Hello World, 2018-04-17
• 打赏
• 举报

``````    var Items = ['特', '一', '二', '三'], Weight = [1, 3, 5, 10], Jiang = [];
for (var i = 0, n = Weight.length; i < n; i++) {
for (var j = 0, c = Weight[i]; j < c; j++) {
Jiang.push(Items[i]);
}
}
function Run() {
if (Jiang.length == 0) {
return;
}
var rnd = Math.floor(Math.random() * Jiang.length);
var luck = Jiang.splice(rnd, 1);
//这里可以控制转盘转到某个指定位置才停下来
}
``````
Shane1994 2018-04-17
• 打赏
• 举报

n+=p[i],那如果第一次循环不中，第二次循环中的时候，n=6,二等奖的概率好像是变成6%了吧？好像有点问题，，，能解释一下么，是我理解错了吗

• 打赏
• 举报

n+=p[i],那如果第一次循环不中，第二次循环中的时候，n=6,二等奖的概率好像是变成6%了吧？好像有点问题，，，能解释一下么，是我理解错了吗

• 打赏
• 举报

``````
var g = ["一等奖","二等奖","三等奖","未中奖"];
var p = [1,5,20,74];
var s = p.reduce(function(pv, v){
return pv+v;
},0);
var r = Math.random()*s;
for (var i=0, n=0; i < p.length; i++) {
n += p[i];
if (n>=r) break;
}
``````

87,954

• 近7日
• 近30日
• 至今