以给定概率获取伪随机项

2024-01-12

我想在用户登录时给他一个奖品; 但它需要有一些稀有的奖品,所以我想使用百分比以不同的机会出现奖品

我想显示其中之一[50 : 'flower'], [30 : 'book'], [20 : 'mobile'];使用他们拥有的百分比

如果有任何方法使用 Node.js 或只是 javascript 函数那就太好了


您可以创建一个函数来获取加权随机结果,如下所示:

const weightedSample = (items) => {
    // cache if necessary; in Chrome, seems to make little difference
    const total = Object.values(items).reduce((sum, weight) => sum + weight, 0)

    const rnd = Math.random() * total
    let accumulator = 0

    for (const [item, weight] of Object.entries(items)) {
        accumulator += weight

        if (rnd < accumulator) {
            return item
        }
    }
}

// check frequencies of each result

const prizes = { flower: 50, book: 30, mobile: 20 }
const results = Object.fromEntries(Object.keys(prizes).map(k => [k, 0]))

for (let i = 0; i < 1e6; ++i) {
    const prize = weightedSample(prizes)
    
    ++results[prize]
}

// sample results: { flower: 500287, book: 299478, mobile: 200235 }
console.log(results)

无论权重加起来是否为 100、是否为整数等等,这都会起作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以给定概率获取伪随机项 的相关文章

  • 如何正确地将节点从引用传递到上下文?

    我正在尝试将节点从引用传递到上下文 但是因为我在第一次渲染后没有重新渲染 所以传递的节 点是null 我考虑了两种变体 但我认为它们不是最好的 To pass ref代替ref current 但在用例中 我将被迫使用类似的东西contex
  • 鼠标移动时画布拖动

    我正在尝试构建一个可以使用鼠标移动拖动的画布 我做了一些我无法理解的错误 因为一开始似乎有效 然后出现了一个增量错误 使画布移动得太快 考虑以下代码 window onload function var canvas document ge
  • 从 puppeteer PDF 中删除分页符?

    我目前正在尝试查看是否有一种方法可以删除我的 puppeteer PDF 中的分页符 因为我当前的 PDF 设置中的一些分页符正在以一种奇怪的方式切断文本 我正在谈论的内容的屏幕截图 我的傀儡代码 app get companyId pdf
  • 如何在 Windows 网络中的 Intranet Web 应用程序中获取用户的用户名

    我内部有一个简单的 HTML 页面 它只显示一个表单并要求用户填写 我想自动捕获Windows域用户名和机器名 并将其与表单中收集的数据一起提交 我可以在客户端这样做吗 HTML JavaScript 或者我被迫在服务器端执行此操作 我还不
  • 尝试使用 Mongoose 进行批量更新插入。最干净的方法是什么?

    我有一个集合 其中包含包含三个字段的文档 名字 姓氏和年龄 我试图找出 Mongoose 中的哪个查询可以用来进行批量更新插入 我的应用程序偶尔会收到具有相同三个字段的新对象数组 我希望查询检查文档中是否已存在名字和姓氏 如果存在 则更新年
  • 指定 HTML5 输入类型 = 日期的值输出?

    我想将本机日期选择器添加到我的应用程序中 该应用程序当前使用遗留的本地系统 日期输入支持尚未广泛普及 但如果我可以基于兼容性提供这两种实现 那就太理想了 有没有办法指定 HTML 日期选择器给出的值的输出 歌剧的默认设置是yyyy mm d
  • 仅从功能区打开一个对话框

    我有一个带有登录按钮的功能区 可打开登录对话框 我想将对话框的数量限制为一个 我正在使用函数 displayDialogAsync startAddress options callback https learn microsoft co
  • 修复 Raphaël 路径节点上 Tipsy 工具提示的位置

    这是一个非常具体且有些复杂的问题 所以我设置了一个最小测试用例 http reveal dk 8080 revealit dk tipsytest 在阅读本文的其余部分之前 您可能应该先了解一下 我的页面显示悬停时突出显示区域的图像Raph
  • 在给定索引上将字符串分成两部分并返回两部分

    我有一个字符串 需要在给定索引上拆分 然后返回两个部分 并用逗号分隔 例如 string 8211 8 211 98700 98 700 因此 我需要能够在任何给定索引上拆分字符串 然后返回字符串的两半 内置方法似乎执行分割 但只返回分割的
  • Mongoose 总是返回空数组? [复制]

    这个问题在这里已经有答案了 我是nodejs i的新手 我已经有一个名为aqi的数据库 集合名称为pln 我试图在网页上显示集合中的所有记录 但猫鼬总是返回空数组 我已经用其他数据库测试了它 但我可以从它们获取数据 但对于 pln mong
  • 使用 eval 时不会受到 XSS 威胁

    我正在制作 不是现在 但我仍然对这个感到好奇 一款使用 HTML5 和 JS 的游戏 我想要的是人们可以插入自定义脚本 但要安全 function executeCustomJS code eval code bad 当然这段代码非常糟糕
  • 将默认搜索文本添加到搜索框 html

    我正在努力将 搜索 文本添加到搜索框 我正在努力实现 onfocus 消失文本 And onblur 重新出现文本 到目前为止 我已经实现了这一点 但我必须将其硬编码为 html eg
  • 使用排序函数按 NSDates 对数组进行排序[重复]

    这个问题在这里已经有答案了 我有一个名为的模型类Event import Foundation import MapKit public class Event let id Int var title String let status
  • 当rest api应用程序服务器(express)和Angulars js应用程序在不同端口上运行时出现Cors问题

    我有用node js编写的rest api应用程序 express在端口3000上运行 而angularjs应用程序在同一服务器上的端口9001上运行 从 angularjs 应用程序调用 rst api 时 出现了 cors 问题 在re
  • chrome 选项卡/窗口中的 window.open 行为

    我有一小段 javascript 旨在打开两个或更多选项卡 这在 FF 和 IE 中工作正常 但 chrome 会在新窗口而不是选项卡中打开第二个窗口 它不依赖于 url 因为我已经尝试过使用两个相同的 url 第一个在选项卡中打开 第二个
  • 如何告诉node.js mysql没有在默认端口上运行?

    我遇到了与此人类似的问题 连接 ECONNREFUSED 节点 js sql https stackoverflow com questions 8825342 connect econnrefused node js sql 我正在尝试将
  • 如何计算一行中Flexbox项目的数量?

    网格是使用 CSS flexbox 实现的 Example http jsbin com jumosicasi edit html css js output 本示例中的行数为 4 因为我出于演示目的固定了容器宽度 但是 实际上 它可以根据
  • eventSources 到事件 Json,完整日历

    我正在尝试从 eventSources 获取 json 调用到我的事件 我在 eventSources 中返回的 json 是 title Title Test start 1305841052 当我将此字符串传递到事件中时 它会正确显示日
  • 有序 JSON 对象

    我有一个 servlet 它与数据库通信 然后返回有序 按时间排序 对象的列表 在servlet部分 我有 access DB returns a list of User objects ordered ArrayList users M
  • 从json中获取所有子节点

    我有以下 json var source k 01 k 02 children k 05 k 06 children k ABC k PQR k 07 k 03 我希望能够指定 k 的值并取回所有孩子 以及孙

随机推荐

  • 从 JAR 文件加载属性 (java 1.6)

    我手动将属性文件注入 jar 内 如何从 java 1 7 之前的 jar 文件加载属性 我尝试了很多解决方法 但到目前为止没有任何效果 关于它有很多问题 但一切都集中在 java 1 7 的 ClassLoader 方法上 当类路径或 j
  • MissingMethodException:找不到方法:'布尔值

    帮助我在运行 ASP NET 项目时解决此错误 MissingMethodException Method not found Boolean Microsoft AspNetCore Cryptography UnsafeNativeMe
  • RichTextBox 在 Azure 上抛出 OutOfMemory

    我正在使用 RichTextBox 将 RTF 中的字符串转换为纯文本 使用这段代码 private string ConvertToText string rtf if string IsNullOrWhiteSpace rtf retu
  • Interface Builder 从目标继承模块选择了错误的目标

    我有一个包含三个方案的项目 Debug MyApp Beta MyApp MyApp 该项目具有三种配置 Debug Beta 和 AppStore 此外 每个目标都会构建各自的配置 当我在 Interface Builder 中使用自定义
  • jeromq 生产准备好了吗?

    我过去曾通过 JVM 应用程序使用 ZeroMQjzmq图书馆 我计划在一个新项目中使用 Zeromq 其中一些服务是在 JVM 上实现的 我刚刚发现jeromq https github com zeromq jeromq 一个 Zero
  • 面包屑微数据帮助

    我正在尝试帮助 Google 为我的网站生成适当的面包屑详细信息 我目前正在使用它作为面包屑 div span class crust a href http www radonsystems net class crumb span Ho
  • Git - 更改分支时文件会去哪里?

    刚刚开始学习 git 我喜欢它的概念 到目前为止 有一件事对我来说有点奇怪 我似乎无法在搜索中找到 当我打字时git checkout branchName要更改为我想要的任何分支 当我查看 Finder 窗口时 我可以根据我所在的分支直观
  • Kubernetes 部署与 StatefulSet

    我对 Kubernetes 做了很多挖掘 我很喜欢我所看到的 我一直无法清楚地了解的一件事是 Deployment 和 StatefulSet 资源之间的确切区别是什么 以及您将在哪些场景中使用它们 或者通常更喜欢其中一种 Deployme
  • 顺序对象是否由指定的 jQuery 选择器返回?

    所有 jQuery 选择器都会返回一个对象数组 这些对象的顺序是否始终与 HTML 中的顺序相同 我可以依靠这个吗 Yes The jQuery 1 3 2 发行说明 https blog jquery com 2009 02 20 jqu
  • 如何获得两个元素之间的距离(中点)?

    我需要你的帮助 我在它们之间放置了随机数量的 div div div class item Item description div div class item Item description div div class item It
  • Vim 突出显示 FORTRAN 中奇怪的部分

    我正在使用 VIM 主题 molokai 如果这有什么区别的话 我最近一直在学习 FORTRAN 当我使用 VIM 编写 FORTRAN 程序时 根据我的空白 我有奇怪的颜色 例如 如果我按原样 没有缩进 进行制表符 我只会在单词的一部分上
  • Enumerable.Range - 什么时候使用才有意义?

    编程时 几乎本能地决定何时使用 for 循环或 foreach 但是选择使用 Enumerable Range 的决定因素或问题空间是什么 A For Loop当我们想要迭代一定次数 通过简单的数据类型 来计算 执行重复任务时选择 A Fo
  • 在Java编译器中,哪种类型可以定义为标识符(ID)或关键字(保留字)?

    我有一个简单的问题 在Java编译器中 哪些类型的方法或变量可以被定义为标识符 ID 或关键字 保留字 对于以下示例 ID 应为 add main a b c Test1 关于什么print is printID 或关键字 Example
  • Postgres - 返回 2 个数组的交集的函数?

    在 postgresql 中 如果两个数组具有公共成员 即它们重叠 则可以使用 运算符返回 t true 是否有一个函数 运算符可以返回这些常见成员的内容 即像这样 select arrray intersection ARRAY 1 4
  • 如何从自定义发行版中采样?

    我有一个发行版的pdf 该分布不是标准分布 R 中不存在可从中采样的函数 如何使用 R 从此 pdf 中进行采样 这更多的是一个统计问题 因为它需要采样 但一般来说 您可以采用这种方法来解决问题 查找发行版f 其 pdf 当乘以任何给定常数
  • Hibernate 中的通用 DAO 模式

    在处理 Hibernate 时 我们遵循 Hibernate Doc 中提到的通用 Hibernate DAO 模式 因此 我们目前正在维护两个并行的层次结构 1 对于接口 2 实施 因此 如果我们以这种方式工作 即使除了标准持久性方法之外
  • 如何在 xampp windows [php 7.2] 中安装/启用 GD?

    我不知道如何为 PHP7 2 安装 php gd 有没有办法在 xampp windows 中安装 启用 GD 扩展 我检查了 php ini 文件php gd2 dll但我找不到那条线 PHP7 2 中似乎缺少 GD 有什么建议么 转到
  • 是否可以使用指向参数数量未知的函数的指针?

    我正在编写一个简单的类来衡量函数在时间方面的性能 用户应该能够发送指向他的函数的指针 函数的参数 调用该函数的时间以及我将调用该函数的时间 返回经过的时间 我的问题是我不知道用户的函数需要多少个参数 我想使用可变参数函数来获取未知数量的参数
  • 运行 tf.estimator.train 100 步时,在张量板上仅看到一个步骤

    我有一个通过我自己的自定义构建的自定义估算器model fn 我想跑train并在张量板上查看每个步骤的数据点 但是 无论步骤数如何 每次调用我都只能看到一个数据点 以下是我构建和训练估算器的方法 estimator tf estimato
  • 以给定概率获取伪随机项

    我想在用户登录时给他一个奖品 但它需要有一些稀有的奖品 所以我想使用百分比以不同的机会出现奖品 我想显示其中之一 50 flower 30 book 20 mobile 使用他们拥有的百分比 如果有任何方法使用 Node js 或只是 ja