类方法中的随机数生成器
本文关键字:随机数生成器 类方法 | 更新日期: 2023-09-27 17:54:19
这是类class内部方法的一部分。我的目标是生成一个随机数,这个随机数将存储在一个名为iCell的变量中。在此之后,iCell将用于switch语句来更改字符cell。我从iCell = Random.Next(1,9);
行得到一个错误,上面写着"错误,非静态字段,方法或属性需要对象引用"System.Random。下一个(int, int)"。是不可能有一个随机数生成器在类方法?
public void CPUMove() //method marks cell for CPU
char cell;
int iCell;
Random rand = new Random();
iCell = Random.Next(1, 9);
switch (iCell)
{
case 1:
cell = '1';
break;
case 2:
cell = '2';
break;
case 3:
cell = '3';
break;
case 4:
cell = '4';
break;
case 5:
cell = '5';
break;
case 6:
cell = '6';
break;
case 7:
cell = '7';
break;
case 8:
cell = '8';
break;
case 9:
cell = '9';
break;
}
iCell = rand.Next(1, 9);
使用已经创建的对象。
请注意,您应该在程序中创建这个Random
实例一次。也许你可以把它变成一个类变量,甚至是一个静态的类变量。
你想要rand.Next
而不是Random.Next
,这样你就引用了你刚刚创建的实例
还可以去掉大的switch语句。只写:
cell = iCell.ToString()[0];
除了其他答案:最好将Random实例设置为静态
class MyClass {
static Random rand = new Random();
public void CPUMove() { //method marks cell for CPU
char cell;
int iCell;
iCell = rand.Next(1, 9);
cell = iCell.ToString()[0];
}
}
你可以这样做:
// Simplest case, not thread safe
// The same generator for all CPUMove() calls
private static Random rand = new Random();
// method marks cell for CPU
public void CPUMove() {
// Don't re-create Random each time you need a random value:
// the values generated will be badly skewed
// Random rand = new Random();
// You don't need any switch/case here, just a conversion
Char cell = (Char) (rand.Next('1', '9'));
...
}