生成具有固定概率的随机数

2023-12-01

我在论坛上对此经常感到愤怒,但所有答案都针对所提出的问题。我发现最接近我需要的是:概率随机数生成器,作者:Alon Gubkin.

不同的是,Alon要求给一张脸(也就是六张)额外的机会。就我而言,我想划分 6 个面孔的机会,使它们加起来为 100%。例如,面 1 有 40% 的机会,面 2 只有 10%,面 3 有 25%,...等。

我怎样才能做到这一点?


线性概率的单概率检查可以通过以下方式轻松完成:

function checkWithProbability($probability=0.1, $length=10000)
{
   $test = mt_rand(1, $length);
   return $test<=$probability*$length;
}

例如,这将产生:

for($i=0; $i<10; $i++)
{
   var_dump(checkWithProbability(1/3));
}

就像是:



bool(false)
bool(true)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(true)
bool(false)
  

您可以使用该原理以所需的概率进行边缘检查:

function checkWithSet(array $set, $length=10000)
{
   $left = 0;
   foreach($set as $num=>$right)
   {
      $set[$num] = $left + $right*$length;
      $left = $set[$num];
   }
   $test = mt_rand(1, $length);
   $left = 1;
   foreach($set as $num=>$right)
   {
      if($test>=$left && $test<=$right)
      {
         return $num;
      }
      $left = $right;
   }
   return null;//debug, no event realized
}

这个想法是使用几何概率-即将一些行部分分成相应长度的部分,然后检查我们的随机数属于哪一部分。




                 0.75  0.9
                  |    |
                  V    V
*--------*--*-----*-*--*--* <-- (length)
^        ^  ^       ^     ^
|        |  |       |     |
0      0.4 0.5     0.8    1
  

样本将是:

$set = [
  1 => 0.4,
  2 => 0.1,
  3 => 0.25,
  4 => 0.05,
  5 => 0.1,
  6 => 0.1
];
for($i=0; $i<10; $i++)
{
   var_dump(checkWithSet($set));
}

结果如下:



int(1)
int(2)
int(2)
int(6)
int(3)
int(1)
int(1)
int(6)
int(1)
int(1)
  

你可以增加$length- 理论上,这会提高随机检查的“质量”,但这并不是一件容易的事 - 因为mt_rand()使用伪随机生成器,梅森扭转者(在理想情况下,这不是真正的线性概率)

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

生成具有固定概率的随机数 的相关文章

  • 自定义 WP 主题时,我应该将导航栏放在“”标签之前还是之后?

    我正在通过制作子主题来自定义 WP 主题 我将 Bootstrap 中的导航栏放入子主题目录中的 header php 文件中 但是 我不确定在哪里放置导航栏代码 我可以把它都放在前面and之后标记成功 例如 无论我选择哪一个 导航栏都显示
  • 如何复制 ArrayIterator 以保留其当前迭代位置?

    因为这似乎是我必须做的才能达到这种效果 arr a gt first b gt second iter new ArrayIterator arr Do a bunch of iterations iter gt next new iter
  • 如何在 Laravel 查询中使用多个 OR,AND 条件

    我需要 Laravel 查询帮助 我的自定义查询 返回正确结果 Select FROM events WHERE status 0 AND type public or type private 如何写这个查询Laravel Event w
  • 从 xgb.train() 获取概率

    我是 Python 和机器学习的新手 我在网上搜索了我的问题 并尝试了人们建议的解决方案 但仍然没有得到它 如果有人能帮助我 我将非常感激 我正在开发我的第一个 XGboost 模型 我已经使用 xgb XGBClassifier 调整了参
  • 从 octobercms 中的非 ajax 表单获取输入值

    我正在尝试构建一个简单的搜索功能 下面是我的搜索表格
  • PHP 绑定“bigint”数据类型(MySQLi 准备好的语句)

    studentId 57004542323382 companyOfferId 7 sql INSERT INTO studentPlacement companyOfferId studentId VALUES if stmt db gt
  • 如何通过php的require()或include()函数传递变量?

    当我使用这个时 require diggstyle code php page page no 警告是 无法打开流 第 198 行 C xampp htdocs 4ajax gallery core php 中没有错误 错误是 Failed
  • 使用先前的反向引用作为命名捕获组的名称

    有没有办法使用对先前捕获组的反向引用作为捕获组的名称命名捕获组 这可能不可能 如果不可能 那么这就是一个有效的答案 下列 data description some description preg match data matches p
  • Magento - 检查 cms 页面

    我想通过 php 检查页面是否是 Magento 中的 cms page 我需要不同的 cms 页面面包屑 所以我尝试在一个条件下做到这一点 但我不知道如何或在哪里查看 到目前为止 这是我的 breadcrumbs phtml p some
  • PHP Solr PECL 扩展安装

    我已经使用命令安装了 pecl solr pecl install solr 和梨使用 wget http pear php net go pear phar php go pear phar 重启Apache后 我仍然收到错误 Fatal
  • WordPress 分页自定义帖子类型

    我有一个名为 新闻 的页面 使用页面模板page newslist php 它应该显示来自自定义帖子类型 也称为新闻 的帖子 我意识到两者具有相同的名称会导致问题 因此在注册自定义帖子类型时 我进行了重写以将其与页面区分开来 rewrite
  • 为什么我的 if 语句没有按我预期的方式工作?

    我正在尝试实现以下目标 我向我的 SQL 数据库询问使用SELECT FROM subjects 这样做之后我要求使用数组mysqli fetch assoc 在那之前一切都很好 现在的问题是 当我尝试在每个循环中修改 genero 的值
  • 强制 Composer 下载 git repo 而不是 zip

    我对作曲家有一些问题 require php gt 5 3 2 kriswallsmith buzz 0 7 Repo https github com kriswallsmith Buzz tree v0 7 https github c
  • 自动建议 php 的 ajax

    我有一个 html 表单 php 脚本和 jquery 我需要一个 ajax 代码来从我的 php 脚本中进行自动建议 以下是代码 表单 html
  • Apache、PHP 和 MySQL 可移植吗?

    我可以在外部硬盘上运行 Apache PHP 和 MySQL 吗 我需要这个 因为我在不同的地方工作 计算机 有时我没有安装和配置所有使用的应用程序 当然可以 XAMPP http www apachefriends org en xamp
  • URL 中的 %2F 中断并且未引用所需的 .php 文件 [重复]

    这个问题在这里已经有答案了 我需要将 作为变量作为 URL 的一部分传递 我的结构如下所示 www domain com listings page 1 city Burnaby South type Townhome bedroom 2
  • 保存多对多关系,同步/附加不存在?

    我有以下两个多对多关系的模型 use Illuminate Database Eloquent Model class Permission extends Model The database table used by the mode
  • Laravel leftJoin 仅右表的最后一条记录

    我是 Laravel 的新手 我有两张桌子 1 产品 2 价格 products id product int p key name varchar prices id price int p key id product int
  • 检查 $_POST 数据

    我正在对表单进行一些垃圾邮件检查 下面的代码在我的本地主机上正常工作 如果为 true 则重定向到 google com 但是 当它在生产服务器上时却不起作用 执行脚本的其余部分并且不重定向到 Google com if POST SERV
  • 如何在laravel中注册后自动登录

    我在 laravel 中注册用户时遇到问题 user假设是包含所有数组元素的数组 同时自动登录以下代码结果false 数据库中保存的密码是hash make password user id this gt user model gt ad

随机推荐

  • 是什么让数据结构递归?

    我正在读关于递归数据类型其中有以下引用 在计算机编程语言中 递归数据类型 也称为递归定义 归纳定义或归纳数据类型 是可能包含相同类型的其他值的值的数据类型 我知道链表和树可以是递归数据类型 因为它包含相同数据结构的较小版本 就像树可以有子树
  • 使用 self 快速惰性实例化

    我有一些真正让我困惑的事情 特别是以下代码触发编译器错误 无法解析的标识符自身 我不确定为什么会发生这种情况 因为惰性意味着在使用该属性时 该类已经实例化 我错过了什么吗 提前谢谢了 这是代码 class FirstClass unowne
  • DLL 中声明的全局变量会发生什么情况?

    假设我用 C 编写了一个 DLL 并使用一个重要的析构函数声明了一个类的全局对象 DLL卸载时会调用析构函数吗 在 Windows C DLL 中 所有全局对象 包括类的静态成员 将在使用 DLL PROCESS ATTACH 调用 Dll
  • 如何编写一个返回自身引用的迭代器?

    我无法表达返回值的生命周期Iterator执行 如何在不更改迭代器返回值的情况下编译此代码 我希望它返回一个引用向量 很明显 我没有正确使用生命周期参数 但在尝试了各种方法后我放弃了 我不知道该怎么办 use std iter Iterat
  • 如何在nodejs中异步require

    我正在使用 bluebird 来初始化各种类型的数据库连接 fileA js Promise all allConnectionPromises then function theModels then i want to do modul
  • 将纪元转换为日期时间 SQL Server

    抱歉 我的帽子在标题中折断了 我遇到以下问题 dateadd S unixtime 1970 01 01 将纪元转换为datetime在 SQL Server 中 但收到以下错误 将表达式转换为数据类型 int 时出现算术溢出错误 显然这意
  • 如何在 addEventListener 方法之外访问变量值?

    我正在尝试访问 addeventlistner 外部的 var accInfo 值 以便我可以使用该对象进行进一步编码 我是 javascript 的初学者 不知道 jquery 和其他框架 所以请指导我 谢谢 let form1 docu
  • 在哪里可以找到一些提供 VB.NET 教程的网站?

    我正在寻找一个类似于 W3Schools 的网站 该网站教授 VB NET 2008 的基础知识 如果不存在 我只想要一些好的教程来帮助我入门 几年前我做了一些基本的 VB NET 但我需要更新自己 有什么想法吗 这有一些非常好的截屏视频
  • 重写 .htaccess 中的查询字符串

    我正在尝试对查询字符串进行非常简单的重写 但我一点运气都没有 我需要从 http example dot com ACT jquery to http example dot com index php ACT jquery 这是我在 ht
  • Meteor 自定义包中的 CoffeeScript 命名空间导出

    在几个小时内 我无法让 Meteor 包导出 CoffeeScript 文件中定义的变量 In foo coffee 例如 我尝试使用 Foo foo 1 Foo foo 1 exports Foo foo 1 等等 但是nothing会工
  • Typescript:来自枚举的字符串文字联合类型

    我想从枚举中获取字符串文字联合 对于这个枚举 enum Weekday MONDAY mon TUESDAY tue WEDNESDAY wed 我想得到这个 type WeekdayType mon tue wed I tried typ
  • Python 程序输出不正确的循环素数

    问题陈述 数字 197 被称为循环素数 因为数字的所有旋转 197 971 和 719 本身都是素数 100 以下的素数有 13 个 2 3 5 7 11 13 17 31 37 71 73 79 和 97 一百万以下的圆形素数有多少个 我
  • 如何检查存储库是否是裸露的?

    我收到警告 warning You did not specify any refspecs to push and the current remote warning has not configured any push refspe
  • 在一个 OSGi 实例中部署多个捆绑版本

    我在 CQ 中部署了三个应用程序 它们都依赖于一个捆绑包 例如 核心 核心正在经历重大改造 需要定义所有三个应用程序对不同版本核心的依赖关系 例如 A 将依赖于 core 1 0 B 将依赖于 core 1 5 C 将依赖 core 2 0
  • 按字母顺序对数组结果进行分组 PHP

    我使用下面的代码来显示数据库中网站的图像和名称 fieldset h1 A h1 ul li class siteli a href class add div img src width 16 height div p p a li ul
  • Backbone.js中不同视图的调用方法

    我将backbone js 与 ASP NET MVC 4 结合使用 我想从视图之一调用不同视图的方法 为了使这一点更容易理解 我在下面创建了一个小示例 在 MyView2 的 OperationCompleted 方法中 我想调用以下 调
  • 获取提交按钮id

    在 asp net 表单中 我有几个动态生成的按钮 所有这些按钮都提交一个表单 有没有办法获取哪个按钮在页面加载事件中提交表单 The sender处理程序的参数包含对引发事件的控件的引用 private void MyClickEvent
  • ggplot 用于多个分类变量——计数数据

    一如既往 这个论坛是我找到问题解决方案的最后希望 我正在研究一个数据集 其中一些参与者 儿童 接受了干预计划以提高他们的社交技能 态度 在治疗之前 所有参与者都观看了一段视频片段 其中发生了 足球比赛 篮球比赛 和 斯诺克比赛 演员们要么
  • Javascript 相当于 php 的 strtotime()?

    在 PHP 中 您可以轻松地将英文文本日期时间描述转换为正确的日期 strtotime Javascript中有类似的东西吗 那没有 最接近的内置选项是Date parse 它解析非常有限的子集什么的strtotime can var ts
  • 生成具有固定概率的随机数

    我在论坛上对此经常感到愤怒 但所有答案都针对所提出的问题 我发现最接近我需要的是 概率随机数生成器 作者 Alon Gubkin 不同的是 Alon要求给一张脸 也就是六张 额外的机会 就我而言 我想划分 6 个面孔的机会 使它们加起来为