2017-10-09 57 views
-2

我有2个问题,当我尝试生成随机数,第一个int valor = rdn.Next(10,42);,当我打电话给这个rdn.Next()生成数字总是10或41,第二个cell = list[rdn.Next(0,lista.Count - 1)];有时名单将有大小2,但产生数总是0C#随机总是返回最初或最后一个号码

public static List<BlocoUnico> GerarMatriz(BlocoUnico[,] maze) 
    { 
     Random rdn = new Random(); 
     List<BlocoUnico> list = new List<BlocoUnico>(); 
     List<BlocoUnico> cellList = new List<BlocoUnico>(); 
     BlocoUnico cell = maze[1, 0]; 
     int valor = rdn.Next(10,42); 
     for (int i = 0; i < valor; i++) 
     { 
      cellList.Add(cell); 
      list = VerificarBlocos(cell, maze, cellList); 
      cell = list[rdn.Next(0, list.Count - 1)]; 
      cell.Passou = "*"; 
      list.Clear(); 
     } 
     return cellList; 
    } 
+2

尝试使用种子... – rmjoia

+6

“有时名单将有大小2,但产生数总是0”。那么是的,因为你调用了'rdn.Next(0,1)',并且上边界是唯一的,所以0是它可以返回的唯一值。 –

+3

至于第一部分 - 我非常怀疑'rdn.Next(10,42)'总是返回10或41.请提供[mcve]。 –

回答

0

把随机的方法之外。

例如为:

//In the class 
static Random rnd = new Random();