Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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# 绕数组循环_C#_Arrays_Algorithm_Increment - Fatal编程技术网

C# 绕数组循环

C# 绕数组循环,c#,arrays,algorithm,increment,C#,Arrays,Algorithm,Increment,假设我有一个数组: arr[3]={0,1,2}; 我正在生成一个随机值: int r = Random.Range(0,4); 然后在我的代码中,我想使用: print(arr[r-1]+arr[r]+arr[r+1]); 在这种情况下,它只在arr[r]为1时起作用,因为如果r=0,那么r-1将为-1,如果我增加最后一个索引,它返回到某个点,我该怎么做? 如果r=2,那么arr[r]=2,arr[r+1]=0,并且arr[r+4]也是0,因为它做了一个额外的循环 我知道我可以使用ifs

假设我有一个数组:

arr[3]={0,1,2};
我正在生成一个随机值:

int r = Random.Range(0,4);
然后在我的代码中,我想使用:

print(arr[r-1]+arr[r]+arr[r+1]);
在这种情况下,它只在arr[r]为1时起作用,因为如果r=0,那么r-1将为-1,如果我增加最后一个索引,它返回到某个点,我该怎么做? 如果r=2,那么arr[r]=2,arr[r+1]=0,并且arr[r+4]也是0,因为它做了一个额外的循环

我知道我可以使用ifs,如果r=0,那么r-1=3,但这不是理想的。
谢谢

您可以试试。我不太确定这个操作是否总是返回一个正值,但是您可以始终执行
r=random.range(3,7)
,然后使用
r-1%3
等。

您可以尝试使用模数%。我不太确定这个操作是否总是返回一个正值,但是您可以始终执行
r=random.range(3,7)
,然后使用
r-1%3
等。

我认为您可以使用以下内容:

var random = new Random();

var arr = new [] { 0, 1, 2 };

for (var i = 0; i < 20; i++)
{
    int r = random.Next(1, 1 + arr.Length);
    Console.WriteLine(String.Join(", ", (r - 1) % 3, r % 3, (r + 1) % 3));
}
var random=new random();
var arr=new[]{0,1,2};
对于(变量i=0;i<20;i++)
{
int r=随机下一个(1,1+arr.Length);
Console.WriteLine(String.Join(“,”,(r-1)%3,r%3,(r+1)%3));
}
这将产生:

1, 2, 0 2, 0, 1 2, 0, 1 1, 2, 0 2, 0, 1 2, 0, 1 1, 2, 0 1, 2, 0 2, 0, 1 1, 2, 0 1, 2, 0 1, 2, 0 2, 0, 1 1, 2, 0 1, 2, 0 1, 2, 0 0, 1, 2 1, 2, 0 1, 2, 0 0, 1, 2 1, 2, 0 2, 0, 1 2, 0, 1 1, 2, 0 2, 0, 1 2, 0, 1 1, 2, 0 1, 2, 0 2, 0, 1 1, 2, 0 1, 2, 0 1, 2, 0 2, 0, 1 1, 2, 0 1, 2, 0 1, 2, 0 0, 1, 2 1, 2, 0 1, 2, 0 0, 1, 2
以下是我认为您可以处理的问题:

var random = new Random();

var arr = new [] { 0, 1, 2 };

for (var i = 0; i < 20; i++)
{
    int r = random.Next(1, 1 + arr.Length);
    Console.WriteLine(String.Join(", ", (r - 1) % 3, r % 3, (r + 1) % 3));
}
var random=new random();
var arr=new[]{0,1,2};
对于(变量i=0;i<20;i++)
{
int r=随机下一个(1,1+arr.Length);
Console.WriteLine(String.Join(“,”,(r-1)%3,r%3,(r+1)%3));
}
这将产生:

1, 2, 0 2, 0, 1 2, 0, 1 1, 2, 0 2, 0, 1 2, 0, 1 1, 2, 0 1, 2, 0 2, 0, 1 1, 2, 0 1, 2, 0 1, 2, 0 2, 0, 1 1, 2, 0 1, 2, 0 1, 2, 0 0, 1, 2 1, 2, 0 1, 2, 0 0, 1, 2 1, 2, 0 2, 0, 1 2, 0, 1 1, 2, 0 2, 0, 1 2, 0, 1 1, 2, 0 1, 2, 0 2, 0, 1 1, 2, 0 1, 2, 0 1, 2, 0 2, 0, 1 1, 2, 0 1, 2, 0 1, 2, 0 0, 1, 2 1, 2, 0 1, 2, 0 0, 1, 2
您可以使用模运算
%
有效的、可运行的C#code将非常有用。此外,无论您选择了什么
r
代码
arr[r-1]+arr[r]+arr[r+1]
都会添加到
3
(一旦您弄清楚如何循环数组)。真正的代码将是有用的。你可以使用模运算
%
有效的、可运行的C#代码将是有用的。此外,无论你选择了什么
r
代码
arr[r-1]+arr[r]+arr[r+1]
都会添加到
3
(一旦你弄清楚如何循环数组)。真正的代码会很有用。