gpt4 book ai didi

javascript - 在纸牌游戏中插入概率

转载 作者:行者123 更新时间:2023-12-02 21:15:00 27 4
gpt4 key购买 nike

我正在创建一个代码,通过按下按钮可以随机抽取一张卡片。但是,我希望某些卡比其他卡更稀有,但我不知道如何集成它,代码根本不是我最喜欢的领域......非常感谢您的帮助和给我的提示!

    var spongebob = "<img src = 'http://www.homastudio.com/img/spongebob.png'>";
var patrick = "<img src = 'http://www.homastudio.com/img/patrick.png'>";
var squidward = "<img src = 'http://www.homastudio.com/img/squidward.png'>";
var sandy = "<img src = 'http://www.homastudio.com/img/sandy.png'>";
var krabs = "<img src = 'http://www.homastudio.com/img/krabs.png'>";
var larry = "<img src = 'http://www.homastudio.com/img/larry.png'>";
var images = [spongebob, patrick, squidward, sandy, krabs, larry]
var names = ["Spongebob Squarepants", "Patrick Star", "Squidward Tentacles", "Sandy Cheeks", "Eugene Krabs", "Larry Lobster"]
function displayImage(){
var rn = Math.random();
rn = rn*6;
rn = Math.floor(rn);
document.getElementById("pic").innerHTML=images[rn];
document.getElementById("name").innerHTML=names[rn];
}

最佳答案

您所追求的称为加权随机选择,也就是说它仍然是随机选择,但某些项目的权重更高。该算法相当简单。

您从一个项目列表开始,并为每个项目分配一个相对权重。权重越高,被选中的可能性就越大。然后,选择一个介于 0 和所有元素的总重量之间的随机数,然后逐步浏览这些元素,从你选择的随机数中减去每个元素的重量。当数字达到零时,您就拥有了您的元素。

这是一个例子。

function WeightedBroker(){
this.totalWeight = 0;
this.items = [];

this.addItem = function(value,weight){
this.items.push({value,weight});
this.totalWeight+= weight;
}

this.pickItem = function(){
var rnd = Math.floor(Math.random() * this.totalWeight);
for(var i=0;i<this.items.length;i++){
if(rnd<=this.items[i].weight)
return this.items[i].value;
rnd -= this.items[i].weight;
}
}
}

var broker = new WeightedBroker();
broker.addItem("a",100);
broker.addItem("b",10);
broker.addItem("c",1);

for(var i=0;i<10;i++)
console.log(broker.pickItem());

将此应用于您的代码非常简单,您需要将这 2 个数组(一个包含 img html,一个包含名称)更改为包含属性 namesrc。您可以根据您的要求将这些项目中的每一项添加到我上面写的经纪人中,并为每个项目添加适当的权重。像这样的事情:

function WeightedBroker(){
this.totalWeight = 0;
this.items = [];

this.addItem = function(value,weight){
this.items.push({value,weight});
this.totalWeight+= weight;
}

this.pickItem = function(){
var rnd = Math.floor(Math.random() * this.totalWeight);
for(var i=0;i<this.items.length;i++){
if(rnd<=this.items[i].weight)
return this.items[i].value;
rnd -= this.items[i].weight;
}
}
}

var broker = new WeightedBroker();
broker.addItem({src:"<img src = 'http://www.homastudio.com/img/spongebob.png'>",name:"Spongebob Squarepants"},100);
broker.addItem({src:"<img src = 'http://www.homastudio.com/img/patrick.png'>",name:"Patrick Star"},100);
broker.addItem({src:"<img src = 'http://www.homastudio.com/img/squidward.png'>",name:"Squidward Tentacles"},100);
broker.addItem({src:"<img src = 'http://www.homastudio.com/img/sandy.png'>",name:"Sandy Cheeks"},100);
broker.addItem({src:"<img src = 'http://www.homastudio.com/img/krabs.png'>",name:"Eugene Krabs"},100);
broker.addItem({src:"<img src = 'http://www.homastudio.com/img/larry.png'>",name:"Larry Lobster"},100);

var item = broker.pickItem();
document.getElementById("pic").innerHTML=item.src;
document.getElementById("name").innerHTML=item.name;
<div id="name"></div>
<div id="pic"></div>

关于javascript - 在纸牌游戏中插入概率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60994841/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com