鱼C论坛

 找回密码
 立即注册
查看: 1038|回复: 11

[已解决]求获取按照一定的算法生成一组随机数

[复制链接]
发表于 2020-2-27 10:16:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
哪位大神能够帮忙给出一套算法,总共需要20个随机数,这一组随机数必须满足它们的和是100,并且它们的均值为100/20=5,并且这组数据每个随机数的值必须是在4-6之间,这应该如何实现?谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-27 10:27:01 | 显示全部楼层
都是浮点数吗  还是都是整数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-27 10:36:03 | 显示全部楼层    本楼为最佳答案   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-27 10:41:26 | 显示全部楼层
wp231957 发表于 2020-2-27 10:27
都是浮点数吗  还是都是整数

必须是整数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-27 10:43:37 | 显示全部楼层
zltzlt 发表于 2020-2-27 10:36
https://fishc.com.cn/thread-154789-1-1.html

看了您的回复,是浮点数,版主,如果是整数的话该如何处理呢?谢谢了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-27 10:51:54 | 显示全部楼层
Michael001 发表于 2020-2-27 10:43
看了您的回复,是浮点数,版主,如果是整数的话该如何处理呢?谢谢了!
  1. import random as rd

  2. result = []
  3. result2 = []

  4. def test():
  5.     while len(result) < 20:
  6.         a = rd.randint(4, 6)
  7.         if a == 6:
  8.             result.append(a)
  9.             result.append(4)
  10.         elif a == 4:
  11.             result.append(a)
  12.             result.append(6)
  13.         elif a == 5:
  14.             result.append(a)
  15.     return result
复制代码

瞎写了一个,可以试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-27 10:57:25 | 显示全部楼层
qiuyouzhi 发表于 2020-2-27 10:51
瞎写了一个,可以试试

多谢回复,您的代码没有考虑总和的问题,但是还是要谢谢您!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-27 10:59:22 | 显示全部楼层
zltzlt 发表于 2020-2-27 10:36
https://fishc.com.cn/thread-154789-1-1.html

谢谢版主,看懂了,我加已修改,已经实现了我想要的功能,多谢分享!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-27 11:03:16 | 显示全部楼层
本帖最后由 qiuyouzhi 于 2020-2-27 11:12 编辑
Michael001 发表于 2020-2-27 10:57
多谢回复,您的代码没有考虑总和的问题,但是还是要谢谢您!

  1. import random as rd

  2. def test():
  3.     result = []
  4.     while len(result) < 20:
  5.         a = rd.randint(4, 6)
  6.         if a == 6:
  7.             result.append(a)
  8.             result.append(4)
  9.         elif a == 4:
  10.             result.append(a)
  11.             result.append(6)
  12.         elif a == 5:
  13.             result.append(a)
  14.         sum1 = sum(result)
  15.         if sum1 > 100 or sum1 == 105:
  16.             result.remove(5)
  17.             sum1 = sum(result)
  18.         if sum1 > 100 or sum1 == 105:
  19.             continue
  20.     return result, sum1
  21.    

  22. for i in range(1000):
  23.     print(test())
复制代码

现在呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-27 11:11:55 | 显示全部楼层
Michael001 发表于 2020-2-27 10:57
多谢回复,您的代码没有考虑总和的问题,但是还是要谢谢您!

现在呢?
  1. import random as rd

  2. def test():
  3.     result = []
  4.     while len(result) < 20:
  5.         a = rd.randint(4, 6)
  6.         if a == 6:
  7.             result.append(a)
  8.             result.append(4)
  9.         elif a == 4:
  10.             result.append(a)
  11.             result.append(6)
  12.         elif a == 5:
  13.             result.append(a)
  14.         sum1 = sum(result)
  15.         if sum1 > 100 or sum1 == 105:
  16.             result.remove(5)
  17.             sum1 = sum(result)
  18.         if sum1 > 100 or sum1 == 105:
  19.             continue
  20.     return result, sum1
  21.    

  22. for i in range(1000):
  23.     print(test())
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-27 14:43:51 | 显示全部楼层

还是不行,不过不要紧,我按照 https://fishc.com.cn/thread-154789-1-1.html 方法改了一下,可以了,谢谢您!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-30 05:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表