【发布时间】:2010-09-25 01:19:01
【问题描述】:
我有一个代表硬币的类,可以使用 Coin.Flip() 方法翻转它。 Flip() 使用 random.Next(2);获得代表正面或反面的 0 或 1。这很好用.. 有点。
对于该程序,我需要制作 2 个硬币,比如说 coin1 和 coin2。
coin2 总是需要在 coin1 之后直接翻转,我可以这样做:
coin1.Flip();
coin2.Flip();
应该可以吧?
好吧,它没有!每次我运行这两行代码时,两个硬币的值都相同!
面值存储在Coin类里面的face中,定义如下:
private int face;
我没有发现我所做的事情有任何问题,但是每次我运行代码时,它们最终都是相同的。
哦,还有,在 Coin 类中定义随机也是这样:
private Random random = new Random();
感谢您的帮助!
编辑:这里是 Flip(),虽然 random 是静态的,但它现在可以工作了。
public void Flip() {
face = random.Next(2);
}
【问题讨论】:
-
你能展示一下 Flip 的实现吗?
-
注意:如果将其设为静态,您还应该同步它或使其特定于线程,因为它未列为线程安全