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

为何在代码位置B使用Random类时有时无控制台输出?

问题原因解析

核心差异:随机数生成时机

  • 当result定义在循环外部(A位置):只会生成一次随机索引,这个索引的范围是0到movie.Count-1,循环遍历列表时,必然会找到i等于该索引的元素,所以能稳定输出对应影片。
  • 当result定义在循环内部(B位置):每一次循环迭代都会重新生成一个新的随机数,这时候只有当当前循环的i恰好等于这次新生成的随机数时,才会触发输出。

你遇到的“result为0却无输出”的原因

你看到的result=0,是某一次循环迭代中生成的随机数,但此时循环的i并不等于0(比如i=3、i=5的时候),所以movie[i].Index.Equals(result)的条件不成立,自然不会输出索引0对应的影片。如果全程循环下来,没有任何一次i和当前迭代生成的result相等,就会完全没有输出。

额外优化建议

这段代码完全不需要用循环查找,直接通过随机索引访问列表元素即可,代码更简洁高效:

private static void PickRandomMovie(List<Movie> movie)
{
    var rng = new Random();
    var result = rng.Next(0, movie.Count);
    Console.WriteLine(movie[result].Title);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 22:35:15