Php 随机函数:值越高,出现的频率越低

Php 随机函数:值越高,出现的频率越低,php,math,random,Php,Math,Random,我有一个棘手的问题,我已经研究了好几次,但都没有弄清楚 一些背景故事:我正在制作一个基于文本的RPG游戏,玩家在游戏中与动物/怪物等战斗。它的工作原理与任何其他游戏一样,在游戏中,每一轮你都会在对方身上命中多个生命值 问题是:我使用php中的random函数生成命中的最终值,这取决于等级、护甲等。但我希望较高的值(如最大命中率)比较低的值显示得更少 这是一个示例图: 如何使用PHP和rand函数复制类似的内容?键入rand(1100)时,每个数字都有均等的被挑选的机会 我的想法是:做一个二次函

我有一个棘手的问题,我已经研究了好几次,但都没有弄清楚

一些背景故事:我正在制作一个基于文本的RPG游戏,玩家在游戏中与动物/怪物等战斗。它的工作原理与任何其他游戏一样,在游戏中,每一轮你都会在对方身上命中多个生命值

问题是:我使用php中的random函数生成命中的最终值,这取决于等级、护甲等。但我希望较高的值(如最大命中率)比较低的值显示得更少

这是一个示例图:

如何使用PHP和rand函数复制类似的内容?键入
rand(1100)
时,每个数字都有均等的被挑选的机会

我的想法是:做一个二次函数(或二次函数),然后用随机数(x)进行计算

这工作像我想要的吗


这个问题有点棘手,如果你想了解更多信息和细节,请告诉我

请看这篇精彩的文章:

有考虑掷骰子和结果百分比的交互式图表。 这对你应该很有用

注意这种滚动随机数:

roll1 = rollDice(2,  12);
roll2 = rollDice(2,  12);
damage = min(roll1, roll2);
这会给你你想要的东西。

好的,我的想法如下:

假设您有一个元素数组
(a,b,c,d)
,您不需要随机选择其中一个。执行
rand(1,4)
以获得随机元素索引,这意味着所有元素出现的机会均等。(25%)

现在,假设我们使用这个数组:
(a,b,c,d,d)

这里我们还有4个元素,但不是每个元素都有相同的出现机会

  • a、 b、c:20%
  • d:40%
或者,让我们以这个数组为例:

(1,2,3,…,97,97,97,98,98,98,99,99,99100100)

提示:这样不仅可以使随机数生成算法产生偏差,还可以实际设置每个随机数(或一系列随机数)出现的期望概率


所以,我会这样做:

如果你想要1到100之间的数字(数字越大,出现的频率越高,那么你可以得到1到1000之间的随机数,并将其与更宽的范围相关联

rand = 800-1000 => rand/10 (80->100)
rand = 600-800  => rand/9 (66->88)
...
或者诸如此类的。(你可以使用你想象的任何数学运算,模运算或其他任何运算……然后玩你的算法。)我希望你明白我的想法


祝你好运!:-)

看一看。如果你想让较高的值比较低的值出现的次数少,那么图表应该反转否?我猜X轴是数字,Y轴是出现的机会。