首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

一个随机生成数组的算法有关问题

2012-09-17 
一个随机生成数组的算法问题!给定最小值min、最大值max,随机生成指定长度N的浮点型数组,并且该数组的平均值

一个随机生成数组的算法问题!
给定最小值min、最大值max,随机生成指定长度N的浮点型数组,并且该数组的平均值等于avg;求简单的算法。

[解决办法]
相当于在n维空间里,先作一个x1+...+xn=N*avg的平面,然后截取它在[min,max]^n的正方体内的那个部分,然后取样。直接按序随机每一个元素就可以了,不过需要仔细计算每一步的概率分布。
[解决办法]
很简单 ,每次随机生成一个数值前,先计算最大可能数pMax,最小可能数pMin,再在这个区间里取随机就好了,python解法

Python code
import randomdef foo2(minV,maxV,N,avg):    total = N*avg    result = []    for i in range(N,0,-1):        pMin = max(total-(i-1)*maxV,minV)        pMax = min(total-(i-1)*minV,maxV)        v = random.uniform(pMin,pMax)        result.append(v)        total-=v    print(result,sum(result),sum(result)/N) 

热点排行