C#窗体开发:如何显示全部生成的500个1-200随机数?
问题解决:生成并显示500个1-200的随机数
原代码存在的核心问题
- 生成逻辑仅生成1个随机数,未循环执行500次生成操作
- 文件写入时仅写入1个数值,未批量写入500个随机数
- 读取时用
ReadByte()读取单个字节,但写入的是int类型(占4字节),会导致数据读取错误;同时仅读取1次,未循环读取所有数值 - 未使用
using语句自动管理流资源,手动调用Close存在资源泄漏风险
修正后的生成代码
private void cmdGenererNombres_Click(object sender, EventArgs e) { Random rand = new Random(); using (FileStream fs = new FileStream("Binaire.bin", FileMode.Create, FileAccess.Write, FileShare.None)) using (BinaryWriter bw = new BinaryWriter(fs)) { for (int i = 0; i < 500; i++) { int number = rand.Next(1, 201); bw.Write(number); } } }
修正后的读取代码
private void cmdAfficherNombres_Click(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(); using (FileStream fsSource = new FileStream("Binaire.bin", FileMode.Open, FileAccess.Read, FileShare.None)) using (BinaryReader br = new BinaryReader(fsSource)) { for (int i = 0; i < 500; i++) { int number = br.ReadInt32(); sb.AppendLine(number.ToString()); } } MessageBox.Show(sb.ToString(), "500个随机数"); }
关键修改说明
- 生成逻辑:添加
for循环执行500次随机数生成与写入;用using语句自动释放文件流和写入器资源,无需手动关闭 - 读取逻辑:用
StringBuilder拼接所有随机数,实现一次性显示;使用ReadInt32()读取完整的int类型数值(匹配写入时的类型);循环读取500次获取全部数据 - 随机数种子:移除
Random构造函数的固定种子参数,确保每次运行生成不同的随机数序列(若需固定序列可保留该参数)
内容的提问来源于stack exchange,提问作者Nicolas
相关产品推荐
相关产品推荐

