怎样生成10个随机数,且其和为100?

tjcougar 2002-09-03 10:46:36
要求每次调用这个函数时,生成的随机数都不同
...全文
1303 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
huxiangming 2002-09-04
  • 打赏
  • 举报
回复
一个数值的精度高的数据,通过一定的算法变成精度低点的叫园整,其实象INT等也可以叫园整。
tjcougar 2002-09-04
  • 打赏
  • 举报
回复
大虾,恕我无知,什么是园整?
sunminxu 2002-09-04
  • 打赏
  • 举报
回复
你在第一个里就可以找到!

但是你不要在后面的问题里发出一样的东西!要是那样的话就不可以在以后的

几个例子里,发生同样的问题哦!

呵呵……
方工 2002-09-04
  • 打赏
  • 举报
回复
假设你要的是整数,那么用我的方法每次产生的t1,t2,...应当是四舍五入的最接近整数,由于误差的积累,最后的和结果可能不恰好等于100,那么就将最后一个数适当 + - 一个差值即可。
asdfsdfrewrwesr 2002-09-04
  • 打赏
  • 举报
回复
很简单啊。 用从午夜流失的秒数做种子。 得到的随机数的范围,可以这样
第一次 0--100 产生 N1
第一次 0--100-N1 .. N2
第一次 0--100-N2 .. N3
第一次 0--100-N3 .. 4N4
第一次 0--100-N4. .. N5

就可以了。当然,你要控制几个数的生成,当然有范围了。

huxiangming 2002-09-03
  • 打赏
  • 举报
回复
onestab的方法比较合理,这样才是真正的随机数,园整后多或少的数可以再使用一个(1-10)之间的随机数分配下去。
方工 2002-09-03
  • 打赏
  • 举报
回复
随便产生10个随机数 s1,s2...,将它们加起来,和为sum,
所求序列为 t1,t2,.., 和为100,
则: t1 = 100 * s1 / sum
(需要园整)
tjcougar 2002-09-03
  • 打赏
  • 举报
回复
我是说那样的话会成固定模式:前9个都在10以内,可是实际上完全有可能大于10
bluecc 2002-09-03
  • 打赏
  • 举报
回复
对一>=1的数,只要在生成随机数时加个判断就行了.小于就再生成一个
不会的啊,楼主的要求是每次都不一样,这样可以实现的啊
tjcougar 2002-09-03
  • 打赏
  • 举报
回复
to 深蓝:
那样就不是真正的随机数了
tjcougar 2002-09-03
  • 打赏
  • 举报
回复
很不错,可是这样会有为0的数
要求>=1
bluecc 2002-09-03
  • 打赏
  • 举报
回复
我说的是,前9个只要都不超过10,在放大随机数的时候取放大倍数小一点就行了.
bluecc 2002-09-03
  • 打赏
  • 举报
回复
不会的啊,因为随机生成的数在0-1之间,所以怎么加都不会超过100的,而且原来没有说明数的大小,所以前9个怎么都行
fansofamei 2002-09-03
  • 打赏
  • 举报
回复
以上有误,算来以上sum之和大于100,难道要负数
应对所取的数作控制,
dim max,min
randmize now
num1=max-min+rnd-1'max为控制范围内最大数,min为最小数
其他如楼上
wiw 2002-09-03
  • 打赏
  • 举报
回复
init=100
for i=1 to 9
randmize
d(i)=init*rnd
init=init-d(i)
sum=sum+d(i)
next
d(10)=100-sum
tjcougar 2002-09-03
  • 打赏
  • 举报
回复
前九个怎么能随便生成?
bluecc 2002-09-03
  • 打赏
  • 举报
回复
其实我觉得只要控制最后一个就行了,前九个随便生成,第十个用100减不就可以了.

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧