生成N个随机数,使得N个随机数之后约等于X

请问我现在想实现一个函数,生成一个向量

这个向量里面的数据都是随机的,然后这些随机的数据加起来等于一个指定的值,这个应该怎么做?

请先 登录 后评论

2 个回答

Feng Gao

简单的思路就是:

先生成N个随机数的向量,然后把这个向量的和加起来跟X做除法获的倍数,再对向量的每一个数据除以这个倍率:

randVector = rand(X , n)
result = round((X\sum(randVector))*randVector,0)

后续如果要实现,向量之后加起来准确等于X,可以计算,向量和与X的差值,把差值随机分配到某一个数据上即可。

请先 登录 后评论
Jiaheng Qin

应用截绳法可以获得更为均匀的结果,放缩会导致均匀性发生变化。

X = 50.0
n = 10

nodeVector = rand(X , n-1).sort!().append!(X)
preVector = move(nodeVector, 1)
preVector[0] = 0.0
randVector = nodeVector - preVector

参考链接:

https://statisticaloddsandends.wordpress.com/2021/04/20/marginal-distributions-of-the-dirichlet-distribution-and-the-aggregation-property/

https://en.wikipedia.org/wiki/Irwin%E2%80%93Hall_distribution

https://en.wikipedia.org/wiki/Dirichlet_distribution

https://en.wikipedia.org/wiki/User:Skinnerd/Simplex_Point_Picking

请先 登录 后评论
  • 2 关注
  • 0 收藏,802 浏览
  • dongmange 提出于 2022-07-11 10:26

相似问题