栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

生成一个随机数列表,总计为1

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

生成一个随机数列表,总计为1

实际上,最简单的解决方案是采用N个随机值并除以和。

一种更通用的解决方案是使用Dirichlet发行版
http://en.wikipedia.org/wiki/Dirichlet_distribution
(可在numpy中获得)。

通过更改分布的参数,您可以更改单个数字的“随机性”

>>> import numpy as np, numpy.random>>> print np.random.dirichlet(np.ones(10),size=1)[[ 0.01779975  0.14165316  0.01029262  0.168136    0.03061161  0.09046587   0.19987289  0.13398581  0.03119906  0.17598322]]>>> print np.random.dirichlet(np.ones(10)/1000.,size=1)[[  2.63435230e-115   4.31961290e-209   1.41369771e-212   1.42417285e-188    0.00000000e+000   5.79841280e-143   0.00000000e+000   9.85329725e-005    9.99901467e-001   8.37460207e-246]]>>> print np.random.dirichlet(np.ones(10)*1000.,size=1)[[ 0.09967689  0.10151585  0.10077575  0.09875282  0.09935606  0.10093678   0.09517132  0.09891358  0.10206595  0.10283501]]

根据主要参数,狄利克雷分布将给出所有值都接近1./N的向量,其中N是向量的长度,或者给出向量中大多数值将为〜0的向量将是单个1,或者在这些可能性之间给出一些值。

编辑(原始答案的5年后):关于Dirichlet分布的另一个有用的事实是,如果您生成Gamma分布的一组随机变量,然后将它们除以它们的总和,就自然可以得到它。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/637601.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号