当前位置: 首页 > 知识库问答 >
问题:

根据权重和拾取次数拾取随机关键点

祁均
2023-03-14

我正在设计一个广告系统,根据广告的重量(出价)在广告之间随机轮换。

local ads = local ads = {
    ["a"] = {
        views = 0,
        bid = 10
    },
    ["b"] = {
        views = 0,
        bid = 1000
    },
    ["c"] = {
        views = 0,
        bid = 100
    },
    ["d"] = {
        views = 0,
        bid = 50
    },
    ["e"] = {
        views = 0,
        bid = 500
    },
    ["f"] = {
        views = 0,
        bid = 10
    },
}

我四处搜索,找到了以下算法:

  1. 获取所有加权数的总和
  2. 在0和和之间选择一个随机数
  3. 循环表(ads)和if(随机数)

使用算法循环打印1000次

a 3
c 60
b 581
e 313
d 35
f 8

这很好。但正如你所看到的,即使权重相等(出价),广告f收到的浏览量几乎是广告a的3倍。

我试图通过考虑广告已经获得的观点,使算法更加公平。我通过减少每个视图的重量来做到这一点。

我不能使它工作虽然我想知道是否有人可以帮助我?

共有1个答案

翁钧
2023-03-14

如果您想确保每个人都得到正确的比例,可以使用此算法-它需要大量内存:

  • 用10 a、1000 b、100 c填充大小为sum的数组
  • 随机洗牌数组
  • 从0开始按顺序从数组中拾取项目

当元素用完时,可以使用相同的数组重新开始,也可以重新创建数组。每次权重发生变化时,都需要重新创建阵列。

 类似资料:
  • 这里,我们将介绍一下拾取和选择的区别和使用方法。 拾取 通过平台提供的属性和接口,我们可以获取鼠标拾取到(Pick)的物体,将下面的代码输入到项目文件中,即可打印当前拾取和之前拾取的物体。 // 每一帧判断拾取的物体是否发生变化 app.on('update', function () { if (app.picker.isChanged()) { console.clear(); //

  • 我正在将一个庞大的基于Spring Boot1.x的项目升级到Spring Boot2.2。旧版本使用的是LiquiBase3.5,当前的升级分支使用的是LiquiBase3.8。 主changelog文件具有以下结构: LiquiBase的属性读取系统在3.5和3.8之间有变化吗? 作为变通方法,我使用这里定义的方法:https://reflectoring.io/database-migrat

  • 问题内容: 我在服务器的类路径中有一个jar,在jar的根目录中包含log4j.properties文件,用于记录代码。当jar中的代码运行时,不会记录该代码。当我使用 java -Dlog4j.debug 选项分析问题时,我知道log4j正在加载 axis-ant.jar 的log4j.properties文件(这也在我的类路径中),并使用它而不是jar的属性文件。 当我随后从类路径中删除axi

  • 因此,我在eclipse中创建了一个java应用程序,并使用javafx,然后将其导出到一个可运行的jar文件中。但是,当我运行我的。jar文件时,它会给出找不到我的图像的错误。当我在Eclipse内运行时,它工作得非常好。 在UserPane中,我有一个函数将图像名作为“title”并返回ImageView: 我尝试过一些解决方案,但它不会在Eclipse中运行。我需要它在eclipse和.ja

  • 我对HTML字体了解不多,我正在尝试更改所有元素的字体,而不必每次都指定一个类或样式。生成的HTML没有更改字体。 我的HTML(与Bootstrap一起使用)只是 并且我的样式表包含 我在样式表中更改了按钮的其他内容,并且它们被拾取,这样我就知道找到了样式表。 那我做错了什么?

  • 有没有办法从数组中选择一个随机字符串,而不再选择该字符串。所有字符串只拾取一次后,程序结束。 这是我当前的系统,publicstaticvoidmain(String[]argv){ 我的问题是,控制台将返回“此人已被选中”等等。并不是说节目结束系统不起作用,因为Rest会过早地起作用。 [1]: https://i.stack.imgur.com/54Eef.png [如您所见,程序结束,尽管没