c# – 如何基于数组对随机数进行加权

c# – 如何基于数组对随机数进行加权,第1张

概述我一直在考虑如何实现一些坦率地说超出我的数学技能的东西.所以在这里,随意尝试指出我正确的方向,而不是完整的代码解决方案任何帮助,我将不胜感激. 所以,想象一下,我已经对文本进行了分析,并生成了一个不同的两个字符组合的频率表.我将它们存储在26×26阵列中. 例如. A B C D E F G H I J K L M N O P Q R S T U V W X Y ZA 1 15 (frequen 我一直在考虑如何实现一些坦率地说超出我的数学技能的东西.所以在这里,随意尝试指出我正确的方向,而不是完整的代码解决方案任何帮助,我将不胜感激.

所以,想象一下,我已经对文本进行了分析,并生成了一个不同的两个字符组合的频率表.我将它们存储在26×26阵列中.
例如.

A B C D E F G H I J K L M N O P Q R S T U V W X Y ZA 1 15 (frequency of AA,then frequency of AB etc.)B 12 0 (freq of BA,BB etc..)... etc.

所以我想随机选择这两个字符组合,但我想根据频率“权衡”我的选择.即.上面的AB应该比AA高15倍.并且,显然,选择不应该返回类似BB的东西(即频率为0 – 在这个例子中,显然BB确实出现在像Bubble !! :-)这样的单词中).对于0的情况,我意识到我可以循环,直到我得到一个非0频率,但这只是不优雅,因为我有一种感觉/直觉,有一种方法来扭曲我的平均值.

我想要选择我的第一个字符 – 即.行 – (我最终生成一对4对序列)我可以使用系统随机函数(Random class.Next)然后使用’加权’随机算法来选择第二个字符.

有任何想法吗?

解决方法 给出您的示例示例,我将首先创建所有数字的累积序列(1,15,12,0 => 1,16,28,28).

然后我会产生一个0到27之间的随机数(比方说19).

然后我会计算出19是> = 16但是< 28,给我3桶(BA).

总结

以上是内存溢出为你收集整理的c# – 如何基于数组对随机数进行加权全部内容,希望文章能够帮你解决c# – 如何基于数组对随机数进行加权所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1222399.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存