Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >随机从增加赔率的列表中选择

随机从增加赔率的列表中选择
EN

Software Engineering用户
提问于 2013-01-24 11:42:18
回答 5查看 2.3K关注 0票数 2

我有一份实体清单。每个实体都包含一个数字,该数字包含实体已被选中的次数。我需要做一个函数,随机选择实体的n (比如25%)。我想要做的是增加被选中次数最少的实体的概率。假设在5次运行后,实体被选中的时间可以在0到5之间,但我不希望有这样的差。我希望实体被选择的时间或多或少是相等的。

我如何编写一个函数来增加那些没有像其他实体那样经常被选中的实体的概率呢?

我能想到的一种方法是创建一个列表,列出更多的较少选择的实体,增加随机选择该实体的机会。有什么提示,建议,想法吗?

编辑:哇。不再是一个真正的问题,然后又重新开始。因为它不是一个真正的问题,它确实得到了很多答案和评论。谢谢你这么说。我从他们那里得到了我想要的。我有一些好主意要想出来测试一下。

EN

回答 5

Software Engineering用户

发布于 2013-01-24 13:02:48

随机范围

排序

可以根据表达式对项进行排序,其中在当前视图数和视图的最大数量之间选择一个随机数。这确保了具有高视图计数的项目更有可能被赋予一个较大的随机数。而视图计数低的项目更有可能是随机化的。

按照以下表达式random(item.views,max_viewx+1)对列表进行排序

我给出了max_views+1,这样一个新的带有0视图的项列表仍然会产生一个随机排序顺序。

通过SQL

进行测试

我想有一天我可以在博客上使用它。因此,这里尝试将此方法验证为MySQL表。

首先创建一个基本的articles表。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE  TABLE `articles` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  `title` VARCHAR(45) NOT NULL ,
  `views` INT NOT NULL DEFAULT 0 ,
  PRIMARY KEY (`id`) );

现在插入一些具有不同视图计数器的项目。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
INSERT INTO `articles` (`title`, `views`) VALUES ('Home Page', 20);
INSERT INTO `articles` (`title`, `views`) VALUES ('Portfolio', 10);
INSERT INTO `articles` (`title`, `views`) VALUES ('Contact Us', 5);
INSERT INTO `articles` (`title`, `views`) VALUES ('Product - ABC', 2);
INSERT INTO `articles` (`title`, `views`) VALUES ('Product - SHR', 1);
INSERT INTO `articles` (`title`, `views`) VALUES ('Product - DBS', 0);
INSERT INTO `articles` (`title`, `views`) VALUES ('Product - ZZZ', 100);

现在,我可以按views列进行排序,将Product - ZZZ放在底部,但我们希望这感觉是随机的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM `articles`
    ORDER BY `views`+(RAND()*(100-`views`+1));

这对我来说是有效的,将Product - ZZZ放在100%的底部,但是低视图项更有可能在列表中被排序得更高。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM `articles`
    ORDER BY `views`+(RAND()*(100-`views`+25));

通过将+25添加到ORDER BY中,我就可以将列表中的Product - ZZZ稍微提高一些,并使其余的项目更加随机。所以你可以控制随机效应。

票数 4
EN

Software Engineering用户

发布于 2013-01-24 12:24:35

首先,值得指出的是,如果您的选择函数确实是随机的(甚至是令人信服的伪随机),那么从长远来看,所有项目的选择数量都是相同的。

我可以想出很多方法来实现你想要的。这里有一个:

  • 给每个项目一个初始权重,比如说,1.0。
  • 排列列表中的所有项目。根据项目的权重对列表进行排序。
  • 选择新项时,使用随机函数在0和所有项的权重之和之间选择一个数字。接下来,从列表的开头开始添加项目的权重,直到达到您刚才选择的数字为止。选择那个项目。
  • 最后,您需要调整权重并确保列表保持排序(要么再次排序,要么以维护排序的方式进行调整)。

如何调整权重将对算法产生很大影响,但我建议如下:从所选项目的权重中减去1.0,并将1/(n-1)添加到所有其他项目的权重中。

票数 1
EN

Software Engineering用户

发布于 2013-01-24 12:27:41

选择实体的时间平均为相等.给你足够的时间和选择。确实有一个机会,一个实体可以获得幸运和赢得前5次赌博。但这很少见。总的来说,我想说你不必担心这个问题。

但是,如果你想要这是不可能的,只需将任何一个实体排除在彩票之外,因为它有超过标准偏差的胜利者。在较低的数字下,这将排除任何赢得一次赌博的人。

请注意,这是一个游戏,游戏玩家特别热衷于当机会已经被篡改。如果一个人连赢两次,他们会注意到的。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/184717

复制
相关文章
区间/组合/复合/sql查询
$map['id'] = array(array('gt',3),array('lt',10), 'or') ;得到的查询条件是: ( id > 3) OR ( id < 10)
PM吃瓜
2019/08/12
1.1K0
区间/组合/复合/sql查询
用户窗体编程:实现组合框与文本框联动
在VBE中,插入一个类模块,将其重命名为“CComboboxes”。在该类模块中,输入代码:
fanjy
2023/09/27
6100
用户窗体编程:实现组合框与文本框联动
SQL学习之组合查询(UNION)
1、大多数的SQL查询只包含从一个或多个表中返回数据的单条SELECT语句,但是,SQL也允许执行多个查询(多条SELECT语句),并将结果作为一个查询结果集返回。这些组合查询通常称为并或复合查询。 主要有两种情况需要使用组合查询: (1)在一个查询中从不同的表返回结构数据 (2)对一个执行多个查询,按一个查询返回数据 2、使用UNION 使用UNION很简单,所要做的只是给出每条SELECT语句,然后再每条SELECT语句之间加上UNION关键字,这样所给出的SELECT结果集就能组合成一个结果集并返回。
郑小超.
2018/01/24
1.3K0
SQL学习之组合查询(UNION)
MySQL 组合查询及全文本搜索
使用union的规则:1.两条或两条以上的select语句;2.每个select语句必须包含相同的列,表达式或聚集函数;3.这些列可以以不同的次序出现;4.列的数据必须兼容。
小末快跑
2019/07/03
1.1K0
第14课 组合查询创建组合查询union的使用规则
组合查询很容易理解就是讲多个查询的结果放在一起显示 使用UNION关键字进行查询的组合
desperate633
2018/08/22
9730
表单文本框的使用(一) 选择文本
input和textarea都会在value属性保存自己的内容,可设置和读取文本框的值。在textarea中设置value属性无效
赤蓝紫
2023/03/16
1.7K0
表单文本框的使用(一)  选择文本
使用文本框TextView/EditText的清单
在实际的开发中TextView和EditText是非常基本的控件。这两个控件的使用也是十分简单。而TextView/EditText的功能其实也是非常强大,例如简单的图文就可以使用TextView配合Spannable来实现,以及TextView的drawableTop属性。
阳仔
2019/07/31
9260
使用文本框TextView/EditText的清单
sql中的嵌套查询_sql的多表数据嵌套查询
测试的时候发现取出的是一条数据, 因为测试的时候是一天中的两条数据, 没有不同的日期,所以当日以为是正确的 ,然而第二天写入数据了,要取出数据,却发现没有数据, 返回空的行, 以为都是代码又有问题 了,找了半天都没有 ,仔细看看了存储过程中的代码,发现这样返回的数据的确是空的。
全栈程序员站长
2022/09/22
7.1K0
ExcelVBA-ADO-SQL-003多条件组合查询(模糊查询)
假如现在有一个提交表单,里面是N个查询的条件(工号、姓名、性别、年龄、部门、工资、奖金)用户可以只填写其中的几个条件来进行查询。(也可以不填写条件)
哆哆Excel
2022/10/25
2.8K0
ExcelVBA-ADO-SQL-003多条件组合查询(模糊查询)
java中sql如何嵌套查找_SQL 查询嵌套使用[通俗易懂]
id int primary key auto_increment, — 主键id
全栈程序员站长
2022/09/22
4.3K0
java中sql如何嵌套查找_SQL 查询嵌套使用[通俗易懂]
组合查询
查询项目里面放着一个下拉框,下拉框里面每一项要对应到相应的查询内容这样才查询到内容,就比如说项目这里选到了款号了,查询内容就要写对应的款号内容,就不要写颜色这些。
PHY_68
2020/09/16
8730
组合查询
Power BI中的文本大写/小写自动更改现象
在处理一些英文姓名时,经常会发现,excel表中的大小写和Power BI中的不一样,这篇文章简单说明一下:
陈学谦
2021/12/08
4.3K0
Power BI中的文本大写/小写自动更改现象
SQL语句汇总(三)——聚合函数、分组、子查询及组合查询
分组中也可以加入筛选条件WHERE,不过这里一定要注意的是,执行顺序为:WHERE过滤→分组→聚合函数。牢记!
_DIY
2020/05/29
5.1K0
SQL语句汇总(三)——聚合函数、分组、子查询及组合查询
SecureCRT更改vim中#注释的文本内容颜色
今天在学习redis的时候,发现vim打开redis.conf配置文件的时候,#注释起来的代码是蓝色的,阅读起来很不方便。
上分如喝水
2021/08/16
6.2K0
SecureCRT更改vim中#注释的文本内容颜色
Flutter中的文本输入框组件TextField
1. maxLines 最大输入行。默认为单行输入框,配置此参数后则为多行输入框;
越陌度阡
2021/01/05
5.1K0
Flutter中的文本输入框组件TextField
Flat风格的Qml组合框
基于Qml的ComboBox控件修改而成。 组合框代码 import QtQuick 2.0 import QtQuick.Controls 2.0 import QtGraphicalEffect
Qt君
2019/12/16
1.2K0
python文本框事件_文本框事件
οnfοcus=”if(value==’文本框里的字’) {value=”}” οnblur=”if
全栈程序员站长
2022/11/01
3.3K0
ASP.NET中通过文本框的输入实现"拼音码"动态查询的效果
                  <asp:TextBox ID="TextBox1" runat="server" Style="position: relative" Width="200px"                      AutoPostBack="true" OnTextChanged="TextBox1_Changed"></asp:TextBox>                     <asp:Button ID="Button1" runat="server" Style="left: 400px; position: relative; top: 0px"                         Text="查询" OnClick="Button1_Click" />                     <asp:DropDownList ID="DropDownList1" runat="server"  Style="position: relative" Width="200px"                      CausesValidation="True" DataTextField="课程名称">                     </asp:DropDownList></td>
风柏杨4711
2021/03/15
1.4K0
sql中对嵌套查询的处理原则_sql的多表数据嵌套查询
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169416.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
5.7K0
点击加载更多

相似问题

添加新项时重复ListView项

34

Android ListView不显示新项。

15

ListView在添加新项时闪烁

21

切换到其他活动android studio时删除ListView项

10

如何将新项添加到ListView的底部,同时从顶部删除旧项?

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文