生成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
相关产品推荐
相关产品推荐

