栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

根据概率机会选择随机值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

根据概率机会选择随机值

您可以通过使用

rand()
然后再使用累积和来执行此操作。假设它们的总和为100%:

select t.*from (select t.*, (@cumep := @cumep + chance) as cumep      from t cross join(select @cumep := 0, @r := rand()) params     ) twhere @r between cumep - chance and cumeplimit 1;

笔记:

  • rand()
    在子查询中被调用一次以初始化变量。多次调用
    rand()
    是不可取的。
  • 随机数极有可能恰好位于两个值之间的边界上。的
    limit 1
    任意选择1。
  • 通过在时停止子查询可以提高效率
    cumep > @r
  • 值不必按任何特定顺序排列。
  • 可以对其进行修改以处理总和不等于1的机会,但这将是另一个问题。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/517456.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号