Python自动生成多个随机数,保持其和不变

时间:2024-03-19 15:01:43

背景

(1)在公差范围内,产生5个随机数
(2)5个随机数,保留小数点后四位,且和始终不变
(3)产生5组这样的随机数组

要求

(1)所用Python模块:random
(2)安装模块

pip install random

代码

import random
for i in range(5):
    while(True):
        list_random = [round(random.uniform(-0.042,+0.025),4)for _ in range(5)]
        sum_random = 0
        for j in range(len(list_random)):
            sum_random = sum_random + list_random[j]
        if(sum_random == -0.0296):
            if i == 0:
                print(sum_random)
            print(list_random)
            break

运行结果

Python自动生成多个随机数,保持其和不变

知识点复盘

(1)产生指定公差带的随机数:random.uniform(a,b)
uniform:格式,可当做按格式产生随机数记忆

random.uniform(-0.042,+0.025)

(2)保留小数点后四位:round(c,num)

round(random.uniform(-0.042,+0.025),4)

(3)for _ in range(5) 与 for i in range(5)

  • 这两种方法是没有区别的,在Python变量命名规则中,可以以下划线、字母开头命名,这里只用了下划线,本质上没有区别。都是临时变量,仅用一次。
  • range(5)产生的是一个list:[0,1,2,3,4],从0开始,不包括5.

(4)Python高级特性:列表生成式

[round(random.uniform(-0.042,+0.025),4)for _ in range(5)]

注意:写成列表生成式时候,生成元素(round(random.uniform(-0.042,+0.025),4))要放在前面,for循环放在后面,另外还可以将在for循环后面添加if的判断。

具体列表生成式部分内容,参看廖雪峰的官方网站:
https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00138681963899940a998c0ace64bb5ad45d1b56b103c48000