JavaScript-随机选择一个选项,其中更大的索引有更大的机会出现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaScript-随机选择一个选项,其中更大的索引有更大的机会出现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1325字,纯文字阅读大概需要2分钟。
内容图文
![JavaScript-随机选择一个选项,其中更大的索引有更大的机会出现](/upload/InfoBanner/zyjiaocheng/687/0e24359c1061455d95886bf857d20cb2.jpg)
所以,我试图创建一种ai ….而我陷入了这个问题.
假设我们有四个选择.
一种. -23
b. -10
C. 4
d. 80
我必须随机选择上述选项之一…但结果不应完全随机.价值较高的期权必须有更大的机会,否定期权必须有较低的机会.
我需要一个方程式来完成!
顺便说一句我在js中做到这一点
var a=-23;
var b=-10;
var c=4;
var d=80;
var optiontochoose=(equation which choose an option randomly by giving more preference to option with greater values)
解决方法:
我完全同意@user11260787.据我所知,增加被选择价值的机会的唯一方法是增加其在源数据中的存在.
考虑到您希望使用一些权重而不是成比例地增加机会,我将提出以下解决方案:
//source values along with corresponding weights,
//increasing proportionally pick-up probability
const src = [
{value: -23, chance: 3},
{value: -10, chance: 5},
{value: 4, chance: 10},
{value: 80, chance: 20}
];
//pick randomly, considering weights
const weightedRand = src => src.map(entry => (new Array(entry.chance)).fill(entry.value)).flat()[Math.floor(Math.random()*src.reduce((chanceTotal, item) => chanceTotal+=item.chance, 0))];
//do test run for 1M times to check outcome
const outcome1M = {'80':0,'4':0,'-10':0,'-23':0};
[...Array(1000000)].forEach(run => outcome1M[weightedRand(src)]++);
console.log(Object.fromEntries(Object.entries(outcome1M).map(entry => [entry[0],entry[1]/1000000])));
.as-console-wrapper {max-height:100% !important; top: 0}
内容总结
以上是互联网集市为您收集整理的JavaScript-随机选择一个选项,其中更大的索引有更大的机会出现全部内容,希望文章能够帮你解决JavaScript-随机选择一个选项,其中更大的索引有更大的机会出现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。