为什么我的C#随机不创建任何随机数
本文关键字:创建 任何 随机数 随机 我的 为什么 | 更新日期: 2023-09-27 18:21:10
我正在使用以下代码:
var a = (new Random()).Next(2);
这是一个小循环的内部。每次它都会将a的值设置为零。有人能就我做错了什么给我一些建议吗?
更新
谢谢你的建议,但我仍然只看到一个数字:-(这是我添加建议后的代码:
var r1 = new Random();
var r2 = new Random();
foreach (var entry in this.ChangeTracker.Entries()
.Where(
e => e.Entity is IAuditableTable &&
(e.State == EntityState.Added) ||
(e.State == EntityState.Modified)))
{
IAuditableTable e = (IAuditableTable)entry.Entity;
if (entry.State == EntityState.Added)
{
e.CreatedBy = r1.Next(2);
e.CreatedDate = DateTime.Today.AddDays(-1 * r2.Next(30));
}
e.ModifiedBy = r1.Next(2);
e.ModifiedDate = DateTime.Today.AddDays(-1 * r2.Next(30));
}
CreatedBy和ModifiedBy总是得到0:-(
将随机创建移出循环:
var random = new Random();
foreach(var item in items)
{
var a = random.Next(2);
// ...
}
由于新的随机实例是用Environment.TickCount初始化的,即从上次机器启动开始的毫秒数,因此,如果创建速度过快,随机实例将具有相同的种子(这意味着实例将返回完全相同的"随机"值):
public Random() : this(Environment.TickCount)
{
}
过快表示在Environment.TickCount值更新之间的16毫秒内。
正确的方法是:
var random = new Random();
while (true)
{
var a = random.Next(2);
// use a
}