Bog*_*oga 2 c# random windows-phone-7
所以,这是交易.
我为wp7设置了一个应用程序,其中有一个包含50个引号的数组.当用户单击按钮时,将显示阵列中的随机引用.问题是,引号总是以相同的顺序出现.例如,报价为1-50.订单总是2,4,20,31,10 ......有没有办法解决这个问题?我希望每次使用应用程序时都会出现一个随机且不同的引号.
这是代码:
string[] listaCantadas;
Random r1, r2;
public MainPage()
{
InitializeComponent();
listaCantadas = new string[]
{"//set of quotes
};
r1 = new Random(100);
r2 = new Random(r1.Next(0, 50));
}
//click event for display a random quote
int Cantada = r2.Next(0, listaCantadas.Length - 1);
txtBlockCantada.Text = listaCantadas[Cantada];
});
}
Run Code Online (Sandbox Code Playgroud)
Cod*_*aos 14
你创造了你的第一个实例Random
用Random(100)
即恒定的种子.所以它总会返回相同的序列.这反过来意味着你的第二个实例的种子Random
也将是常量,并且它返回的所有值也是如此.
只需Random
使用默认构造函数创建单个实例,即new Random()
.这是随时间播种的,因此在不同的节目运行之间可能会有所不同.
警告:由于时间只在每几毫秒(典型的Windows计算机上为1-16ms)发生变化,如果您Random
使用默认构造函数快速连续创建多个实例,它们很可能都会返回相同的序列.
另一个常见的陷阱是Random
不是线程安全的.但看起来你不会遇到这个问题.
string[] listaCantadas;
Random r;//No need for more than one instance
public MainPage()
{
InitializeComponent();
listaCantadas = new string[]
{"//set of quotes
};
r = new Random();
}
//click event for display a random quote
int Cantada = r.Next(0, listaCantadas.Length - 1);
txtBlockCantada.Text = listaCantadas[Cantada];
});
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2277 次 |
最近记录: |