Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在限制范围内随机改变bool值_C#_Random_Boolean - Fatal编程技术网

C# 在限制范围内随机改变bool值

C# 在限制范围内随机改变bool值,c#,random,boolean,C#,Random,Boolean,我想写的是一段代码,它会在1到3秒之间的任意时间将bool的值从true更改为false,反之亦然。我试过很多随机的方法。等,并试图设置一个计时器重置,但它只是不点击。我使用的是c语言,我对它很陌生,所以我不确定这是一个简单的技巧还是更复杂的东西。 无论如何,任何论坛或视频都是非常受欢迎的 // 我尝试使用Matthew提供的代码,但它产生了很多错误。我正在使用unity 5,所以这可能就是问题所在。 无论如何,我已经尝试使用以下代码 如果我把代码放在void中,切换到void中,就像我希望它在

我想写的是一段代码,它会在1到3秒之间的任意时间将bool的值从true更改为false,反之亦然。我试过很多随机的方法。等,并试图设置一个计时器重置,但它只是不点击。我使用的是c语言,我对它很陌生,所以我不确定这是一个简单的技巧还是更复杂的东西。 无论如何,任何论坛或视频都是非常受欢迎的

//

我尝试使用Matthew提供的代码,但它产生了很多错误。我正在使用unity 5,所以这可能就是问题所在。 无论如何,我已经尝试使用以下代码


如果我把代码放在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();
        }
    }
}