C# 在限制范围内随机改变bool值
我想写的是一段代码,它会在1到3秒之间的任意时间将bool的值从true更改为false,反之亦然。我试过很多随机的方法。等,并试图设置一个计时器重置,但它只是不点击。我使用的是c语言,我对它很陌生,所以我不确定这是一个简单的技巧还是更复杂的东西。 无论如何,任何论坛或视频都是非常受欢迎的 // 我尝试使用Matthew提供的代码,但它产生了很多错误。我正在使用unity 5,所以这可能就是问题所在。 无论如何,我已经尝试使用以下代码C# 在限制范围内随机改变bool值,c#,random,boolean,C#,Random,Boolean,我想写的是一段代码,它会在1到3秒之间的任意时间将bool的值从true更改为false,反之亦然。我试过很多随机的方法。等,并试图设置一个计时器重置,但它只是不点击。我使用的是c语言,我对它很陌生,所以我不确定这是一个简单的技巧还是更复杂的东西。 无论如何,任何论坛或视频都是非常受欢迎的 // 我尝试使用Matthew提供的代码,但它产生了很多错误。我正在使用unity 5,所以这可能就是问题所在。 无论如何,我已经尝试使用以下代码 如果我把代码放在void中,切换到void中,就像我希望它在
如果我把代码放在void中,切换到void中,就像我希望它在每一帧更新它的工作一样,显然不是在随机时间。你可以创建一个计时器来完成这项工作 首先,使用随机数生成器生成1000到3000之间的毫秒数:
int millseconds = new Random().Next(1000, 3001);
然后创建一个计时器,该计时器将在数毫秒后启动,并为其操作指定一些将设置布尔值的代码:
var callback = new Timer(dummy => { value = true; }, null, millseconds, -1);
请注意,未使用伪参数。将变量设置为true的操作是{value=true;},它假定在作用域中有一个名为value的bool变量
还要注意的是,这个计时器的分辨率不是很高-可能不超过10-20毫秒,但对于随机间隔来说,这可能无关紧要
将其组合到一个简单的控制台应用程序中,可以得到以下结果:
using System;
using System.Threading;
namespace Demo
{
public class Program
{
private static void Main()
{
bool value = false;
int millseconds = new Random().Next(1000, 3001);
var callback = new Timer(dummy => { value = true; }, null, millseconds, -1);
for (int i = 0; i < 100; ++i)
{
Thread.Sleep(100);
Console.WriteLine(value);
}
callback.Dispose();
}
}
}
给我们看看你的代码。还有,这是winforms吗?如果是这样,您可能需要一个单独的线程,具体取决于您的UI需求。您的用户界面要求是什么?您实际尝试了什么?给我们看看你的代码:无论如何:每秒钟调用一次随机化器,并为新值掷骰子。有时它会改变,有时不会-虽然这样的长度可能会超过3秒。我没有太多的代码,这就是问题所在。我浏览了论坛和视频,他们似乎使用随机数生成器,然后使用if语句根据数字更改bool。然而,我不明白如何将时间方面融入其中。你知道有什么有用的网站吗?那就从一系列的种子中随机选取一个索引怎么样?非常有用,因为您可以编写实用程序代码从列表中随机抽取一个项目,并在代码中使用它!我可以看出,我的代码要短得多,这会产生同样的效果。然而,我仍然不确定我遇到的时间问题。
using System;
using System.Threading;
namespace Demo
{
public class Program
{
private static void Main()
{
bool value = false;
int millseconds = new Random().Next(1000, 3001);
var callback = new Timer(dummy => { value = true; }, null, millseconds, -1);
for (int i = 0; i < 100; ++i)
{
Thread.Sleep(100);
Console.WriteLine(value);
}
callback.Dispose();
}
}
}