网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月04日漏签0天
c#吧 关注:188,353贴子:822,416
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 4回复贴,共1页
<<返回c#吧
>0< 加载中...

关于VS编译器内的一个小BUG,循环内实例化对象引起的。

  • 只看楼主
  • 收藏

  • 回复
  • 青青的大白菜
  • c#攻城狮
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//上代码:
static void Main(string[] args)
{
int count = 0;
int a = 0;
while (true)
{
Random random = new Random();
a = random.Next(10);
if (a == 8)
{
Console.WriteLine(count);
break;
}
count++;
}
Console.ReadKey();
}
//代码功能:循环生成一个0-9的随机数,直到生成的数字是8为止,打印生成了多少次。
//看看你们的执行结果,会让你们很惊讶的。


  • 青青的大白菜
  • c#攻城狮
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
把随机数生成器对象放到循环外,结果就正常了。


2025-06-04 10:39:27
广告
  • Dengtaook
  • c#大菜鸟
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这个不是bug,因为随机数的种子是一个整数,默认值来自于系统时钟。你在while中连续创建random对象,由于间隔时间太短,导致默认种子是一样的,因此next输出也是一样的。


  • Dengtaook
  • c#大菜鸟
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
官方解释:
In .NET Framework, the default seed value is derived from the system clock, which has finite resolution. As a result, different Random objects that are created in close succession by a call to the parameterless constructor have identical default seed values and, therefore, produce identical sets of random numbers. You can avoid this problem by using a single Random object to generate all random numbers。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 4回复贴,共1页
<<返回c#吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示