【发布时间】:2013-04-03 16:27:15
【问题描述】:
在我的 .NET 游戏中,我的 rand 函数用于确定五个角色中的每个玩家应该受到多少伤害,但是第一个似乎总是在刻度的底部,最后一个在顶部。因此,在我的Character[0] 中,伤害很少比最小兰特值多 1,并且对于较高索引上的每个 Character,所受到的伤害仅是从较高等级随机分配的。
public int GetDamage(int low, int high)
{
Random r = new Random();
int rand = r.Next(low, high);
return rand;
}
这是我使用的随机发生器。然后我像这样更新剩余的健康:
int Damage = GetDamage(3, 10);
Characters[Target].Health = Characters[Target].Health - Damage;
在这个例子中,dmg 是这样划分的:
Number 1: 3-4
Number 2: 4-6
Number 3: 5-7
Number 4: 7-8
Number 5: 8-9
【问题讨论】:
-
哦,真的吗?非种子随机生成器不是真正随机的吗?
-
虽然不需要讽刺。
-
播种如何使其“更加”随机?真正的问题是,将创建多个
Random实例,可能使用 same 种子(毫秒)产生相同的伪随机数序列。经验法则:为您的整个应用程序拥有 一个Random实例,除非您确切知道为什么需要多个实例。
标签: c# .net visual-studio-2010