You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#窗体开发:如何显示全部生成的500个1-200随机数?

问题解决:生成并显示500个1-200的随机数

原代码存在的核心问题

  1. 生成逻辑仅生成1个随机数,未循环执行500次生成操作
  2. 文件写入时仅写入1个数值,未批量写入500个随机数
  3. 读取时用ReadByte()读取单个字节,但写入的是int类型(占4字节),会导致数据读取错误;同时仅读取1次,未循环读取所有数值
  4. 未使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 13:21:14