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
(一旦你弄清楚如何循环数组)。真正的代码会很有用。