Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.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# IRC Bot-轮盘赌命令_C#_Arrays_Indexoutofboundsexception - Fatal编程技术网

C# IRC Bot-轮盘赌命令

C# IRC Bot-轮盘赌命令,c#,arrays,indexoutofboundsexception,C#,Arrays,Indexoutofboundsexception,我正在尝试为我的机器人制作一个轮盘赌命令,这就是我目前得到的 if (!String.IsNullOrEmpty(e.Data.Message.Replace("!roulette", ""))) { string _u = e.Data.Nick; string _b = e.Data.Message.Replace("!roulette", ""); string[] _c = { "R", "B", "G", "Red", "Black", "Green",

我正在尝试为我的机器人制作一个轮盘赌命令,这就是我目前得到的

if (!String.IsNullOrEmpty(e.Data.Message.Replace("!roulette", ""))) {
    string _u = e.Data.Nick;
    string _b = e.Data.Message.Replace("!roulette", "");
    string[] _c = { "R", "B", "G", "Red", "Black", "Green",
                              "r", "b", "g", "redblack green" };
    Random _r = new Random();
    int rnum = _r.Next(0, 36); // 0-35
    if (_b.Contains(rnum.ToString()) && _b.Contains(_c.ToString())) {
        MessageHandler(conf.Nick, e.Data.Nick + " spins the wheel.. " + _b.ToString() + " " + (string)_c[rnum]  + "! We have a winner!", 8);
    } else {
        MessageHandler(conf.Nick, e.Data.Nick + " spins the wheel.. " + rnum.ToString() + " " + (string)_c[rnum] + "! You lose!", 8);
    }
}
我得到的
索引超出了数组的边界
。错误,对于不那么复杂的东西来说,这很奇怪


我该如何解决这个问题,我会忽略数组而选择字典或列表吗?

您正在使用索引
rnum
引用数组的元素:
\u c[rnum]

rnum
变量可以具有范围
0-35
中的任何整数值
但是
\u c
数组只有
10个
元素

要解决此问题,请将
rnum
变量限制在
0-9
范围内:

int rnum = _r.Next(0, 10);

是的,很抱歉。我补充说。我只是有点累了,因为我整天都在想这个问题。
Random\u r=new Random()
-你应该使用。另外,
rnum=\u r.Next(0,36)
可能有偏差(您必须观察
范围
函数,这就是您实际调用的函数)。你能建立范围,然后使用公平洗牌吗?值被洗牌后,将第一个元素作为选择。请参阅加密堆栈交换上的“保护洗牌算法”。哦!谢谢呃,对不起。这是漫长的一周。再次感谢!接受答案是最好的“谢谢”:通常我会接受,但它告诉我明天才能接受。