gpt4 book ai didi

c# - 分布式概率随机数发生器

转载 作者:IT王子 更新时间:2023-10-29 04:33:31 24 4
gpt4 key购买 nike

我想根据分布概率生成一个数字。例如,假设每个数字出现以下情况:

Number| Count           
1 | 150
2 | 40
3 | 15
4 | 3

with a total of (150+40+15+3) = 208
then the probability of a 1 is 150/208= 0.72
and the probability of a 2 is 40/208 = 0.192

我如何制作一个随机数生成器,返回基于此概率分布的数字?

我很高兴现在它基于一个静态的、硬编码的集合,但我最终希望它从数据库查询中推导出概率分布。

我见过类似的例子,例如 this one但它们不是很通用。有什么建议吗?

最佳答案

一般的做法是将均匀分布的随机数从0..1区间送入the inverse of the cumulative distribution function您想要的分布。

因此,在您的情况下,只需从 0..1 中抽取一个随机数 x(例如使用 Random.NextDouble() )并根据其返回值

  • 1 如果 0 <= x < 150/208,
  • 2 如果 150/208 <= x < 190/208,
  • 3 如果 190/208 <= x < 205/208 并且
  • 4 否则。

关于c# - 分布式概率随机数发生器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9956486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com