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

生成10-99间可被5整除随机数的C#代码问题求助

解决C#生成10-99间能被5整除的随机数及除法问题

先梳理你代码里的几个核心问题:

  • 变量重复定义:同一作用域里已经声明了int h = 0;,后面又声明float h = ...,C#不允许同名变量重复定义。
  • 逻辑错位:你要处理的是生成的随机数,但代码里却用循环变量j做除法,完全没用到生成的随机数。
  • 未实现“能被5整除”的需求:原代码直接生成10-99的随机数,没有筛选或直接生成符合条件的数。
  • 整数除法问题:两个整数相除会触发整数除法(结果只保留整数部分),如果需要浮点结果,得先把其中一个数转为浮点类型。

修正方案一:循环筛选符合条件的数

这种方式直观,适合理解逻辑:

using System;

namespace C_Test2
{
    class Program1
    {
        static void Main(string[] args)
        {
            Random rnd = new Random();
            int randomNum;

            // 循环生成随机数,直到找到能被5整除的
            do
            {
                // Next方法的上限是开区间,写100才能包含99
                randomNum = rnd.Next(10, 100);
            } while (randomNum % 5 != 0);

            Console.WriteLine($"生成的符合条件的随机数:{randomNum}");
            
            int del = 5;
            // 把整数转成float再做除法,避免整数截断
            float divisionResult = (float)randomNum / del;
            Console.WriteLine($"这个数除以5的结果是:{divisionResult}");
        }
    }
}

修正方案二:直接生成符合条件的数(更高效)

10-99之间能被5整除的数,本质是5×2到5×19的数,所以可以直接生成2-19的随机数再乘5,不用循环筛选:

using System;

namespace C_Test2
{
    class Program1
    {
        static void Main(string[] args)
        {
            Random rnd = new Random();
            // 生成2到19的随机数,乘以5后就是10-95之间的5的倍数
            int randomNum = rnd.Next(2, 20) * 5;
            
            Console.WriteLine($"生成的符合条件的随机数:{randomNum}");
            
            int del = 5;
            float divisionResult = (float)randomNum / del;
            Console.WriteLine($"这个数除以5的结果是:{divisionResult}");
        }
    }
}

额外说明

  • 如果不需要浮点结果,直接用int divisionResult = randomNum / del;即可,因为能被5整除的数除以5肯定是整数。
  • 要是想生成多个符合条件的数,把生成逻辑套进for循环里就行,比如for(int i=0; i<5; i++)就能生成5个。

内容的提问来源于stack exchange,提问作者VIGGO420

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:48:24