请教大家一个问题,如何设置概率

比如我想让用户点击一个帖子的时候,可以随机等到1-100个金币,怎么算比较科学呢,比如:
20%的概率得到1-20个金币,
20%的概率得到21-40个金币,
.
.
.
20%的概率得到90-100个金币

直接用rand太随机了,很有可能5次都是90-100个金币

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 7

我是 rand(1-100), 看跳到哪个区间就哪个

4年前 评论
Epona

rand(1,100)就好了😂,实在不行就 先rand(1,5),然后再在这个区间内rand

4年前 评论

我的意思是,怎么明确的控制,比如获得80-100个金币的可能性,可以控制在1%以内

4年前 评论

在 roll 为1% 的时候进入 80-100 再 roll

4年前 评论
wongvio (楼主) 4年前
小李世界 (作者) 4年前

@wongvio 可以用当前时间戳控制,比如 time() % 100 == 1。 就是1%的概率。 time() % 5 == 1, 就是 20%的概率。

4年前 评论

可以这样,首先设定一个比较值 比如说

$flag = 1;  //对比值
rand(0,100) == $flag 的概率就是1%
rand(0,50) == $flag 的概率就是2%
rand(0,10) == $flag 的概率就是10%
rand(0,1) == $flag 的概率就是50%
rand(0,0) == $flag 的概率就是100%
4年前 评论
L学习不停 4年前
wongvio (楼主) 4年前
一句话儿 4年前
wongvio (楼主) 4年前
Epona 4年前

如果不是特别严谨的概率抽奖的话,和你的做法是一样的。 随机生成一个数,判断这个数落在哪个区间内;如果想某个奖项的中的概率不那么大的话,区间小一点即可;

循环抽取1w次作为标本,分部在每个区间的比例就比较偏向于中奖的概率了

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!