实验报告册-----ndarray的筛选-发红包:1.按照本班级人数,如50人,生成对应数量的随机数,组成一个随机红包数组。2.调整红包中的每一个随机数,使得它们的总和为100

这篇实验报告介绍了如何使用numpy库在Python中实现随机红包分配,并从中找出运气王。首先,根据班级人数生成随机红包数组,确保总和为100。接着,从csv文件读取学生名字并组合成二维数组。通过筛选找到最大红包数额及对应的运气王。然后,再次进行红包分配,计算两次红包之和,确定新的运气王。实验展示了numpy在数据处理和数组筛选方面的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

  1. 按照本班级人数,如50人,生成对应数量的随机数,组成一个随机红包数组。
  2. 调整红包中的每一个随机数,使得它们的总和为100。
  3. 从csv文件(自己用excel创建,可以大家共享)中读出本班学生名字数组,这个数组要和红包数组shape一样。
  4. 筛选出运气王的名字,即红包最大的同学名字。
  5. 同样逻辑再发一次红包,筛选出两次红包之和的运气王。

调用 numpy包

代码:

import numpy as np

# 生成随机红包数组

a=np.random.randint(1,100,size=53).reshape(53,1)

# 读取csv文件

data=np.loadtxt("mingzi.csv",dtype=np.str).reshape(53,1)

# 组合成50×2

datasum=np.hstack((data,a))

# print(datasum)

# 最大数

# print("第一次最大红包金额为:{}".format(max(datasum[:,1])))

# print(datasum[datasum==max(datasum[:,1]),:][:,0])

# 运气王的名字

Yunqq=np.unique(datasum[datasum[:,1]==max(datasum[:,1]),:][:,0])

print("第一次红包共有{}名运气王:".format(len(Yunqq)))

for car in Yunqq:

    print(car)

# 生成随机红包数组

aTwo=np.random.randint(1,100,size=53).reshape(53,1)

# 两次红包相加

aTwo=aTwo+a

# 组合成50×2

datasumTwo=np.hstack((data,aTwo))

# 最大数

# print("两次红包最大金额为:{}".format(int(max(aTwo))))

# 运气王的名字

YunqqTwo=np.unique(datasumTwo[datasumTwo[:,1]==max(datasumTwo[:,1]),:][:,0])

print("第二次红包共有{}名运气王:".format(len(YunqqTwo)))

for car in YunqqTwo:

    print(car)

实验报告册:

实验(实训)项目名称

ndarray的筛选-发红包

学  时

4

实验(实训)室(地点)

实验(实训)日期

成  绩

一 、实验(实训)目的与要求

  • 掌握numpy库中ndarray的定义和用法。
  • 掌握ndarray数组的筛选。
  • 掌握numpy库中随机函数的使用

二 、实验(实训)原理与内容

  • 实验原理

Numpy(Numerical Python)提供了python对多维数组对象的支持:ndarray,具有矢量运算能力,ndarray中随机函数能辅助很多数据处理。

  • 实验内容
  1. 按照本班级人数,如50人,生成对应数量的随机数,组成一个随机红包数组。
  2. 调整红包中的每一个随机数,使得它们的总和为100。
  3. 从csv文件(自己用excel创建,可以大家共享)中读出本班学生名字数组,这个数组要和红包数组shape一样。
  4. 筛选出运气王的名字,即红包最大的同学名字。
  5. 同样逻辑再发一次红包,筛选出两次红包之和的运气王。

三 、实验(实训)仪器设备、器材、工具、软件等

  • Windows、python3.8、numpy 1.15

四 、实验(实训)方法、步骤、过程记录与处理

import numpy as np

# 生成随机红包数组

a=np.random.randint(1,100,size=53).reshape(53,1)

# 读取csv文件

data=np.loadtxt("mingzi.csv",dtype=np.str).reshape(53,1)

# 组合成50×2

datasum=np.hstack((data,a))

# 运气王的名字

Yunqq=np.unique(datasum[datasum[:,1]==max(datasum[:,1]),:][:,0])

print("第一次红包共有{}名运气王:".format(len(Yunqq)))

for car in Yunqq:

    print(car)

# 生成随机红包数组

aTwo=np.random.randint(1,100,size=53).reshape(53,1)

# 两次红包相加

aTwo=aTwo+a

# 组合成50×2

datasumTwo=np.hstack((data,aTwo))

# 最大数

# 运气王的名字

YunqqTwo=np.unique(datasumTwo[datasumTwo[:,1]==max(datasumTwo[:,1]),:][:,0])

print("二次红包共有{}名运气王:".format(len(YunqqTwo)))

for car in YunqqTwo:

    print(car)

五 、实验(实训)结果与分析总结   

结果:

分析总结:

对numpy库的使用还不太熟练,需要加强练习;但是在潜心的研究之下能把这个红包弄出来,就是使用的时间过长,没有太大的效果;之后会加强训练。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值