Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向随机生成的数字0-90的特定范围添加特定百分比几率的方法_Javascript_Discord.js - Fatal编程技术网

Javascript 向随机生成的数字0-90的特定范围添加特定百分比几率的方法

Javascript 向随机生成的数字0-90的特定范围添加特定百分比几率的方法,javascript,discord.js,Javascript,Discord.js,所以我希望随机生成的数字在0到20或75到90之间的概率较低,但在当前随机代码中,该数字在20到75之间的概率较高 我试过很多种方法,但我似乎都不明白 生成数字的数学 function doDamage(attacker, reciever, channel, attack) { let healthbothusers = 100 const healing = testing === false ? Math.floor(healthbothusers = Math

所以我希望随机生成的数字在0到20或75到90之间的概率较低,但在当前随机代码中,该数字在20到75之间的概率较高

我试过很多种方法,但我似乎都不明白

生成数字的数学

function doDamage(attacker, reciever, channel, attack) {

      let healthbothusers = 100

      const healing = testing === false ? Math.floor(healthbothusers = Math.random() * 80) : 100
      const damage = testing === false ? Math.floor(healthbothusers = Math.random() * 90) : 100

      let recieverHealth = usersHealth.get(reciever)
      let attackerHealth = usersHealth.get(attacker)

      let newHealth = recieverHealth - damage

      let beenhealed = attackerHealth + healing

这是我的第一篇堆栈帖子,所以我希望它能正确完成;)

做两次
Math.random
——第一次确定你想要的结果块(翅膀或更常见的中心范围),然后再做一次,从该块中计算出随机结果。
因此,您可以控制机翼升起的频率。与自然分布相比,这将使每个机翼升起的机会减半:

let r=Math.random()
if (r<0.1) { // Giving 0-20 only a 10% chance of occurring
 r=Math.floor(Math.random() * 20)
} else if (r>0.92){  // Giving 75-90 only a 8% chance of occurring
 r=75+Math.floor(Math.random() * 15)
} else { //Giving central range the remainder chance (82%) 
 r=20+Math.floor(Math.random() * 55) //Range goes from 20 to 75
}
设r=Math.random()
如果(r0.92){//则75-90发生的概率仅为8%
r=75+数学地板(数学随机()*15)
}否则{//给予中心范围剩余机会(82%)
r=20+Math.floor(Math.random()*55)//范围从20到75
}
Math.floor(Math.random()*100)+1应该给出1到100之间的百分比。只要该随机百分比是100%,它应该大约是正确的时间百分比。看看这个:

//{
doc=document;htm=doc.documentElement;bod=doc.body;nav=navigator;M=tag=>doc.createElement(tag);I=id=>doc.getElementById(id);
mobile=nav.userAgent.match(/Mobi/i)?真:假;
S=(选择器,在范围内)=>{
设w=在| | doc内;
返回w.querySelector(选择器);
}
Q=(选择器,内部)=>{
设w=在| | doc内;
返回w.querySelectorAll(选择器);
}
希望=功能(百分比){
这个百分比=百分比;
this.chanceIt=()=>{
常数p=该百分比;
返回Math.floor(Math.random()*100)+1>100-this.percent;
}
}
//上面的小库用于重用-下面的魔术可以使用加载事件*放在另一个页面上(除了//结束加载线和下面)*
常数五十=新希望(50),二十五=新希望(25),一=新希望(1);
常数七十五=新希望(75),一百=新希望(100),零=新希望(0);
函数测试(){//近似显示概念证明
设zeroN=0,fiftyN=0,twentyFiveN=0,oneN=0,seventyFiveN=0,onendredn=0;
对于(假设i=0,l=100;i
/*css/external.css*/
*{/*字体大小可能影响空格换行符-单独设置*/
框大小:边框框;字体:0;填充:0;边距:0;
}
html,正文,.full{
宽度:100%;高度:100%;
}
.满{
背景:ccc;填充:7px;
}
钮扣{
光标:指针;宽度:100%;背景:线性渐变(#1b7bb,#147);颜色:#fff;字体:粗体28px塔荷马,日内瓦,无衬线;填充:5px 10px;边框:1px实心#007;边框半径:10px;
}

标题在这里
碰碰运气

这是相似的:好吧,我来看看!我喜欢创建一个可能结果的数组,然后从中随机抽取,而不是凭空抽取。要称重,只需重复一些您希望更频繁出现的数组项,例如:从
[1,1,2,3]抽取
让1出现的频率是2或3的两倍。当然,你的游戏机制取决于你和你正在尝试制作的游戏,但我认为,通过基本上三个均匀分布的“硬”抽样边界有点随意。所以21、74和45都有相同的可能性,但20和75没有。这似乎很奇怪。可以说,以45为中心的高斯分布会给你更多的自然伤害值。当然,你必须裁剪它并绘制一些条形图,以获得你想要的方差。我考虑了伤害值有一段时间,但我也有治疗,所以这就是为什么我最终使用了这些值。我不明白你在这里做了什么。我相信它会起作用,但在我看来,你已经解决了太多超出范围的问题,因此我迷失在与OP相关的内容以及解决其他问题的附加内容中。