相关疑难解决方法(0)

随机数生成器仅生成一个随机数

我有以下功能:

//Function to get random number
public static int RandomNumber(int min, int max)
{
    Random random = new Random();
    return random.Next(min, max);
}
Run Code Online (Sandbox Code Playgroud)

我怎么称呼它:

byte[] mac = new byte[6];
for (int x = 0; x < 6; ++x)
    mac[x] = (byte)(Misc.RandomNumber((int)0xFFFF, (int)0xFFFFFF) % 256);
Run Code Online (Sandbox Code Playgroud)

如果我在运行时使用调试器执行该循环,则会得到不同的值(这就是我想要的).但是,如果我在该代码下面放置一个断点两行,则"mac"数组的所有成员都具有相同的值.

为什么会这样?

c# random

741
推荐指数
8
解决办法
17万
查看次数

麻烦C#随机类

我有一个代表硬币的类,可以使用Coin.Flip()方法翻转.Flip()使用random.Next(2); 获得表示头部或尾部的0或1.这很好..有点.

对于程序,我需要有2个硬币,我可以说硬币1和硬币2.

coin2总是需要在coin1之后直接翻转,我可以用:

coin1.Flip();
coin2.Flip();
Run Code Online (Sandbox Code Playgroud)

那应该有用,对吗?

好吧,它没有!每次我运行这两行代码时,两个硬币最终都会有相同的值!

面值存储在Coin类中的face中,其定义如下:

private int face;
Run Code Online (Sandbox Code Playgroud)

我没有看到我所做的事情有任何问题,但每次运行代码时,它们最终都是相同的.

哦,同样,随机也是在Coin类中定义的,如下所示:

private Random random = new Random();
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

编辑:这是Flip(),它现在可以工作,即random是静态的.

    public void Flip() {
        face = random.Next(2);
    }
Run Code Online (Sandbox Code Playgroud)

c# random

4
推荐指数
1
解决办法
993
查看次数

C#中的随机数

可能重复:
随机数生成器不按我计划的方式工作(C#)

我创建了一个方法,返回一个随机数:

public static int SelectRandomMachine(int max)
{
int seed = (int)DateTime.Now.Ticks;
Random rndNumber = new Random(seed);
int randMachine = rndNumber.Next(0, max);
return randMachine;
}
Run Code Online (Sandbox Code Playgroud)

如果我两次调用该方法,目前它返回相同的随机数:

randM1 = SelectRandomMachine(maxNumber);
randM2 = SelectRandomMachine(maxNumber);
Run Code Online (Sandbox Code Playgroud)

任何建议都将受到高度赞赏.

c# random

3
推荐指数
1
解决办法
5926
查看次数

标签 统计

c# ×3

random ×3